2012-03-11 14 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

関連する問題