2012-08-24 129 views
0

我在循环中使用cvPutText并且它工作正常(打印一些数据连接到每个轮廓附近的不同轮廓)。在循环中或之前尝试使用另一个cvPutText(例如,在图像左上角打印帧号)时,只执行第一个cvPutText并执行并打印。第二个被忽略。OpenCv:第二个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

我需要一个最小的编译代码来帮助你。 [阅读SSCCE!](http://sscce.org/)顺便说一下你的OpenCV版本是什么? – karlphillip

回答

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