0

cvPutText在一个循环中使用它工作正常(打印一些连接到每个轮廓附近不同轮廓的数据)。问题是,当尝试cvPutText在循环中或循环之前使用另一个(例如,在图像的左上角打印帧号)时,只有第一个cvPutText被执行和打印。第二个被忽略。

代码如下所示:

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));

另一个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 回答