OpenCv:第二个cvPutText不是executetd

时间:2012-08-24 20:24:08

标签: c++ opencv

我在循环中使用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),字符和文本。

有人可以帮忙吗?因此我浪费了几天时间,我真的需要这个功能来分析我的卡尔曼滤波器的性能并最​​终完成我的学士论文。

1 个答案:

答案 0 :(得分: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));