我试图弄清楚如何使用Leptonica库提供的分段器进行文档分析。我一直在看第三页,但我想我还没有完全理解它。
如果我将图像作为PIX数据类型加载,是否调用pixGetRegionsBinary()来查找每个符号所在的位置?然后使用文本块掩码分别提取每个符号吗?
如果我正确理解的话,我就会有这样的代码:
Pix* page = pixRead("myImage.tif");
Pix** halftone;
Pix** textline;
Pix** textblock;
if ( pixGetRegionsBinary( page, halftone, textline, textblock, 0 ) )
{
//..error message
}现在textblock是所有字符还是我使用了错误的分段方法:)?另外,我如何知道textblock“数组”何时结束?
提前谢谢!!
编辑26/11/2013
对于任何感兴趣的人- Leptonica DO2文档.页面分割是一个很好的例子,完整的页面分割!
发布于 2016-09-05 04:40:31
字符切分示例:
void CharacterSegmentation(string filename) {
PIX * image = pixRead(filename.c_str());
PIX * binaryImage = pixConvertTo1(image , 250);
Boxa* connectedBox = pixConnCompBB(binaryImage, 4);
for (int i = 0; i < connectedBoxes ->n; i++) {
BOX* box = boxaGetBox(connectedBox , i, L_CLONE);
fprintf(stdout, "Box[%d]: x=%d, y=%d, w=%d, h=%d\n", i, box->x, box->y, box->w, box->h);
BOX* boxd = boxCreate(box->x, box->y, box->w, box->h);
SaveCharacterImage(image, boxd);
boxDestroy(&boxd);
boxDestroy(&binaryImage);
}
pixDestroy(&image);
pixDestroy(&binaryImage);
}
void SaveCharacterImage(PIX* image, BOX* rectangle) {
PIX* pixd = pixClipRectangle(pixa, boxd, NULL);
string s = to_string(i) + ".png";
pixWrite(s.c_str(), pixd, 1);
pixDestroy(&pixd);
}https://stackoverflow.com/questions/20195028
复制相似问题