我在循环中使用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),字符和文本。
有人可以帮忙吗?因此我浪费了几天时间,我真的需要这个功能来分析我的卡尔曼滤波器的性能并最终完成我的学士论文。
答案 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));