问题描述
我使用 Tesseract 从图像中读取数字。 只要我在一个线程中完成所有操作,这就会起作用。一旦我将 tesseract 初始化和识别外包给一个单独的线程,我的程序就会在调用 GetUTF8Text() 方法时崩溃。
我在 Windows 10 x64 系统上使用 Tesseract 4.1.1 和 leptonica-1.78.0。我的程序是一个 x64 QT 应用程序。
这是我的代码:
screenshot(_image); //taking a Screenshot from Desktop
cv::Mat imgBlackWhite; //will later hold the Screen in Black/White
cv::Rect asRect = cv::Rect(580,1035,36,20); //to extract a sub-image
//setup tesseract
tesseract::TessBaseAPI *tessAPI = new tesseract::TessBaseAPI();
tessAPI->Init(NULL,"eng",tesseract::OEM_LSTM_ONLY);
tessAPI->SetPageSegMode(tesseract::PSM_AUTO);
tessAPI->Setvariable("user_defined_dpi","300");
tessAPI->Setvariable("tessedit_char_whitelist","0123456789.");
cv::Mat subASImg(_image,asRect); // creating the image for tesseract
cvtColor(subASImg,imgBlackWhite,cv::COLOR_BGR2GRAY);
cv::resize(imgBlackWhite,cv::Size(imgBlackWhite.cols * 3,imgBlackWhite.rows * 3));
cv::threshold(imgBlackWhite,100,255,cv::THRESH_BINARY_INV);
//Send image to recognition engine of tesseract
tessAPI->Setimage(imgBlackWhite.data,imgBlackWhite.cols,imgBlackWhite.rows,1,imgBlackWhite.step);
//print the detected result: ----> CRASH
qDebug() << tessAPI->GetUTF8Text(); // ----> CRASH (Access violation)
tessAPI->End();
如果我在程序的主线程中做完全相同的事情,它就会工作。
有人可以帮忙吗?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)