c++ - opencv和tesseract有冲突吗?

标签 c++ opencv ocr

我在我的项目中使用 tesseract 和 opencv。

但问题是当我用opencv显示图像时,只出现了图像窗口,但图像没有出现,而且完全是灰色的。

如果我注释掉tesseract相关的代码,opencv可以正常显示图像。

这太奇怪了。任何人都可以帮助我吗?

提前致谢!

#include "stdafx.h"
#include <string>
#include <opencv2/opencv.hpp>

using namespace std;
using namespace cv;


int main() {
// [1]
const char* imagename = "phototest.tif";
Mat img = imread(imagename);
if(img.empty())
{
    fprintf(stderr, "Can not load image %s\n", imagename);
    return -1;
}
imshow("image", img);

tesseract::TessBaseAPI *myOCR = 
        new tesseract::TessBaseAPI();

// [2]
printf("Tesseract-ocr version: %s\n",
       myOCR->Version());
printf("Leptonica version: %s\n",
       getLeptonicaVersion());

// [3]
if (myOCR->Init(NULL, "eng")) {
  fprintf(stderr, "Could not initialize tesseract.\n");
  exit(1);
}

// [4]
Pix *pix = pixRead("phototest.tif");
myOCR->SetImage(pix);

// [5]
char* outText = myOCR->GetUTF8Text();
printf("OCR output:\n\n");
printf(outText);

// [6]
myOCR->Clear();
myOCR->End();
delete [] outText;
pixDestroy(&pix);
system("pause");
return 0;
}   

最佳答案

您能否尝试在您的 imshow 之后的某处添加一个 cv::waitkey(10),这可能会解决您的问题。 您也可以用 cv::waitkey(-1) 替换 system(pause)。

关于c++ - opencv和tesseract有冲突吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13985145/

相关文章:

Python、pyPdf、Adobe PDF OCR 错误 : unsupported filter/lzwdecode

c++ - 我们如何判断远程服务器是否是多线程的?

c++ - 获取指向 lambda 的函数指针?

python - OpenCV Image Resize翻转尺寸?

c++ - Hausdorff 距离目标检测

opencv - cv::RotatedRect 中的非零像素数

c++ - 我什么时候应该防止隐式破坏?它是如何工作的?

c++ - 需要格式化字符串中的字符优先级

python - 如何教卷积神经网络对未知图像说 "no"?

matlab - 使用反向传播算法进行字符识别测试