2012-03-11 2 views
1

openCV 함수 cvPutText를 사용하고 있지만 실행되지 않거나 빠르게 덮어 씁니다. 다음은 코드 블록입니다.왜이 경우 cvPutText가 작동하지 않습니까?

  ... 
if(showResult==1){ 

     cvNamedWindow("Znak", CV_WINDOW_AUTOSIZE); 
     cvShowImage("Znak", znak); 

     if(result == 0){ 
      ascii_result = "A"; 
      cvSet(znak, cvScalar(26,26,26)); 
      cvPutText(znak, "A", cvPoint(13, 185), &font, cvScalar(255, 166, 44, 0)); 
      printf("A working"); 
     } 
     if(result == 1){ 
      ascii_result = "B"; 
      cvSet(znak, cvScalar(26,26,26)); 
      cvPutText(znak, "B", cvPoint(13, 185), &font, cvScalar(255, 166, 44, 0)); 
      printf("B working"); 
     } 
      ... 

아무런 루프가 없습니다. 문제는 창 "ZNAK"가 만들어 졌는지,하지만 cvSet()cvPutText 그래서에만 deafult 회색

+0

'result'의 값은 무엇입니까? 'printf'에 대한 호출이 콘솔에 아무 것도 출력하지 않습니까? –

+0

결과를 0 또는 1로 만들 수 있습니다. printf가 잘 작동하고 있으며 문자열도 ascii_result에 할당되었습니다. cvSet 및 cvPutText 만 실행되지 않습니다. 어쩌면 그것들은 실행되었지만 과대 평가되었지만 cvSet이 실행되면 새로운 cvSet이 호출 될 때까지 전체 창을 검은 색으로 채 웁니다. – OpenMinded

+0

cvWaitKey (0)를 삽입하여 cvSet이 실행 중인지 확인할 수 있습니다. 당신이 어떤 열쇠를 치기 전까지는 프로그램이이 문장에 그대로있을 것입니다. – bubble

답변

2

CvShowImage해야 빈 창을 볼 ... 실행되지 않거나 덮어 쓰기 이미지를 변경하고 보여주고 싶을 때마다 넣으십시오.

 ... 
    if(showResult==1){ 

    cvNamedWindow("Znak", CV_WINDOW_AUTOSIZE); 
    cvShowImage("Znak", znak); 

    if(result == 0){ 
     ascii_result = "A"; 
     cvSet(znak, cvScalar(26,26,26)); 
     cvPutText(znak, "A", cvPoint(13, 185), &font, cvScalar(255, 166, 44, 0)); 
     cvShowImage("Znak", znak); 
     printf("A working"); 
    } 
    if(result == 1){ 
     ascii_result = "B"; 
     cvSet(znak, cvScalar(26,26,26)); 
     cvPutText(znak, "B", cvPoint(13, 185), &font, cvScalar(255, 166, 44, 0)); 
     cvShowImage("Znak", znak); 
     printf("B working"); 
    } 
     ... 

cvShowImage를 호출하면 이미지 사본이 창에 전송됩니다. 코드에서 이미지를 변경하면 이전 이미지의 사본이기 때문에 창에서 이미지가 변경되지 않습니다.

+0

아, 이제 요점을 봅니다. 고마워요! :) – OpenMinded

관련 문제