2013-11-25 68 views
3

我想弄清楚如何使用Leptonica庫提供的分割器進行文檔分析。我一直在尋找pageseg.c,但我不認爲我完全理解它:(!使用Leptonica進行字符分割

如果我把圖像和加載它作爲PIX數據類型,我調用pixGetRegionsBinary()來找到每個符號是然後我用文字塊面膜,提取每個符號分別

如果我理解正確的話我會有這樣的代碼:??

Pix* page = pixRead("myImage.tif"); 

Pix** halftone; 
Pix** textline; 
Pix** textblock; 

if (pixGetRegionsBinary(page, halftone, textline, textblock, 0)) 
{ 
    //..error message 
} 

現在是文本塊的所有字符或我使用我的錯誤的分割方法:)?另外我怎麼會知道什麼時候textblock「數組」結束?

在此先感謝!

編輯26/11/2013

任何有興趣 - Leptonica Doxygen Documentation - Page Segmentation是整版分割的一個很好的例子!字符分割的

回答

0

實施例:

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); 
}