2012-12-21 2 views
1

저는 프로젝트에서 tesseract와 opencv를 사용합니다.opencv와 tesseract 사이에 충돌이 있습니까?

하지만 이미지를 표시 할 때 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; 
} 
+0

tesseract를 사용하는 방법과 이미지를 그리는 방법을 보여주는 작은 코드 스 니펫을 제공 할 수 있습니까? 필자는 tesseract를 opencv와 함께 사용했으며 이전에는 문제가 없었습니다. – yiding

+0

확인. 이미 내 코드를 게시했습니다. 매우 간단합니다. 그냥 입력 이미지를 보여주고 싶습니다. – user1866046

답변

1

imshow 다음에 cv :: waitkey (10)를 추가하면 문제를 해결할 수 있습니까? 시스템 (일시 중지)을 cv :: waitkey (-1)로 바꿀 수 있습니다.

+0

고마워요! 그것은 효과가 있었다. 그러나 보여주기에는 많은 시간이 걸립니다. 속도를 높이는 방법이 있습니까? – user1866046

+0

이미지의 크기는 얼마입니까? 보통 꽤 빠릅니다. 그리고 cv :: waitKey는 어디에서 작성 했습니까? 일시 중지 대신 또는 imwrite 직후에? 이미지 그리기는 cv :: waitKey 중에 수행 될 것입니다. 명심하십시오. –

+0

장소 시스템에 넣습니다 ("일시 중지"). 하지만 imshow 바로 뒤에 cv :: waitKey (-1)를 넣으면 tesseract 결과를 출력 할 수 없습니다. 뭐가 문제 야? – user1866046

관련 문제