0

私はcvPutTextループで使用していますが、正常に動作しています(各輪郭の近くの異なる輪郭に接続されたデータを印刷しています)。問題は、ループ内またはループの前に別のものを使用しようとするとcvPutText(たとえば、画像の左上隅にフレーム番号を印刷する場合)、最初のものだけcvPutTextが実行されて印刷されることです。2 番目は無視されます。

コードは次のようになります。

char text[80];

すべてのループで:

char nam[] = "id : ";
char na[] = "  area : ";
char ka[] = "\n cNr : ";
sprintf(text,"%s%d%s%d%s%d", nam, (*obListIter)->id, ka, contNumber, na ,area);
CvFont font;
cvInitFont(&font, CV_FONT_HERSHEY_SIMPLEX, 0.4, 0.4, 0, 1, 8);
cvPutText(cv_obj_rgb, text, cvPoint(boxPoints[4].x, boxPoints[4].y), &font, cvScalar(255, 255, 255, 0));

もう 1 つcvPutTextはまったく同じに見えますが、フォント (font2)、文字、およびテキストが異なるだけです。

誰でも助けることができますか?そのためにすでに数日を無駄にしており、カルマンフィルターのパフォーマンスを分析し、最終的に学士論文を完成させるために、この機能が本当に必要です。

4

1 に答える 1

0

一度だけ使用する必要cvInitFontがあります。ループで繰り返さないでください。

CvFont font1;
cvInitFont(&font1, CV_FONT_HERSHEY_SIMPLEX, 0.4, 0.4, 0, 1, 8);
CvFont font2;
cvInitFont(&font2, CV_FONT_HERSHEY_SIMPLEX, 0.4, 0.4, 0, 1, 8);

ループ:

char nam[] = "id : ";
char na[] = "  area : ";
char ka[] = "\n cNr : ";
sprintf(text,"%s%d%s%d%s%d", nam, (*obListIter)->id, ka, contNumber, na ,area);
cvPutText(cv_obj_rgb, text, cvPoint(boxPoints[4].x, boxPoints[4].y), &font, cvScalar(255, 255, 255, 0));
于 2012-08-31T16:26:54.317 に答える