2012-04-10 3 views
0

내가 세그먼트 문자 이미지에이 기능을 사용하지만, 프로그램 crach, somone에 발견 솔루션 제발 도와 드릴까요?OpenCV의 문자 무효 분할

+1

당신이 디버그 모드에서 실행하고 충돌하는 라인 말씀해주세요 : 항상 당신이하게 통화의 괴물 수익을 확인? 어떤 OS와 컴파일러를 사용하고 있습니까? – dannyxyz22

+0

은 내가 컴파일 된 Qt Creator를 사용하지만, 난 그냥 다섯 첫 선을하려고 할 때 그것이 SetImageROI을 실행하기 때문에 내가 컴파일 문제가 없습니다 생각하지만, 내가 CvFindContours의 코드를 추가 할 때 그것은 crach, 그래서 내가 문제가 있다고 생각 윤곽 – Butterflay

+0

이 질문에 성공적으로 응답 한 경우의 코드에서, 근처에있는 체크 박스를 클릭하여 공식적인 답변을 선택하는 것이 좋습니다. 그렇지 않은 경우 직접 답변을 추가하는 것을 고려해보십시오. – karlphillip

답변

0

당신은 충돌의 원인이되는 선을 정확히 파악할 필요가있다. 이를 위해 저는 두 가지 방법으로 생각할 수 있습니다 :

  • 디버거를 사용하십시오.
  • 또는 당신이 두려워하는 경우, printf() 방법을 사용하십시오

printf() 방법은 당신이 당신의 응용 프로그램을 실행할 때 그래서 당신은 콘솔에서 볼 수, 프로그램의 각 함수 호출 후 printf() 전화를 걸 포함 마지막으로 printf() 메시지가 무엇입니까? 그러면 충돌을 일으키는 코드를 찾는 데 도움이됩니다. 예 : 나는 당신의 코드에서 본 것을에서

printf("dbg10\n"); 

IplImage *img_cv = cvLoadImage("plaque.jpg"); 
printf("dbg20\n"); 

cvSetImageROI(img_cv,cvRect(8,10,60,35)); 
printf("dbg30\n"); 

IplImage *img_pl = cvCreateImage(cvGetSize(img_cv),img_cv->depth,img_cv->nChannels); 
printf("dbg40\n"); 

cvCopy(img_cv,img_pl, NULL); 
printf("dbg50\n"); 

cvResetImageROI(img_cv); 
printf("dbg60\n"); 

//etc 

, 처음 2 호출 응용 프로그램 충돌 할 가능성이 : cvLoadImage() 이미지를로드 할 수없는 경우는 NULL 포인터를 반환합니다. 다음 함수는 매개 변수로 포인터를 수신하기 때문에, 널 포인터 역 참조 시도하고 그 충돌이 있습니다. 해결책?

IplImage *img_cv = cvLoadImage("plaque.jpg"); 
if (!img_cv) 
{ 
    printf("Failed to load image.\n"); 
    exit(1); 
} 

cvSetImageROI(img_cv,cvRect(8,10,60,35)); 
+0

는 난의 printf()의 추가로 시도하지만 그것이 – Butterflay

+0

의 printf 호출은 단지 당신에게 충돌, 그것은 문제가 해결되지 않습니다 일어나고있는 곳의 힌트를주고 crach!로는 확인하지 않습니다. – karlphillip