2014-10-20 1 views
-1

Я использую OpenCV, чтобы найти координаты номерной знак на фотографии. Затем я пытаюсь отправить эти координаты в tesseract с помощью функции SetRectangle.Tesseract: читать из прямоугольника

... 
CvRect rect; 
rect=cvBoundingRect(contourLow, NULL); // finding rects among contours 
Pix *image = pixRead("auto.jpg"); 
api->SetImage(image); 
api->SetRectangle(rect.x,rect.y,rect.width, rect.height); 
outText = api->GetUTF8Text(); 
printf("OCR output:\n%s", outText);  
... 

Проблема в том, что выход пуст.

Я уверен, что координаты правильные (проверено). Также, если я установил в tesseract изображение отрезанной номерной таблички, он работает правильно.

Итак, как установить прямоугольник в правильной форме?

+0

Каков тип данных 'api'? Как выглядит auto.jpg? Вы можете поделиться им? – karlphillip

ответ

0

Здесь некоторые коды, которые я использовал. Он работает нормально. (Тессеракт 3,02)

tesseract::TessBaseAPI *api = new tesseract::TessBaseAPI(); 
api->TesseractRect(_imgTemp.data,1,_imgTemp.step1(),0,0,_imgTemp.cols,_imgTemp.rows); 
char* text = api->GetUTF8Text(); 
api->Clear(); 
0

Включите необходимые заголовки Тессеракта/baseapi.h и leptonica/allheaders.h сделать это компилируется на вашей машине.

char *outText; 
tesseract::TessBaseAPI *api = new tesseract::TessBaseAPI(); 
// you can specify in input language as eng or fre or any other language the doc relates to 
if (api->Init(NULL, "eng")) { 
    fprintf(stderr, "Could not initialize tesseract.\n"); 
    exit(1); 
} 

Pix *image = pixRead("/usr/src/tesseract/testing/phototest.tif"); 
api->SetImage(image); 
// SetRectangle(left, top, width, height) 
api->SetRectangle(30, 86, 590, 100); 
// Get OCR result 
outText = api->GetUTF8Text(); 
printf("OCR output:\n%s", outText); 

// Destroy used object and release memory 
api->End(); 
delete [] outText; 
pixDestroy(&image); 

return 0;