【发布时间】:2014-01-21 20:35:12
【问题描述】:
这是我能做的:
使用 msdn 中的 CaptureAnImage 函数示例将图像从窗口句柄保存到我的计算机,然后使用带有此代码的 tesseract:
STRING text_out;
tesseract::TessBaseAPI *api = new tesseract::TessBaseAPI();
// Initialize tesseract-ocr with English, without specifying tessdata path
if (api->Init(NULL, "eng")) {
fprintf(stderr, "Could not initialize tesseract.\n");
exit(1);
}
Pix *image = pixRead("captureqwsx.bmp");
api->SetImage(image);
api->SetRectangle(830, 95, 85, 25);
text_out = api->GetUTF8Text();
printf("OCR output:\n%s", text_out.string());
为了从指定的窗口句柄中检索文本。它有效。问题是:我觉得将图像保存到我的计算机不仅没用,而且对我的应用程序的性能可能不是很好......
我找到的解决方案是,将 SetImage 与它的第二个定义一起使用:
void SetImage(const unsigned char* imagedata, int width, int height,
int bytes_per_pixel, int bytes_per_line);
这就是我希望你们能帮助我的方法...我不知道如何检索图像数据、每像素字节数和窗口每行字节数...我觉得原始的 CaptureAnImage 函数应该只需稍作修改即可轻松做到这一点,但我不知道怎么做,而且我的搜索没有返回任何好的结果......
【问题讨论】: