2012-08-24 84 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));