2012-08-27 34 views
-1

我正在试图开发一个程序,根据尺寸计算contourAreas的数量并将其显示给用户。轮廓计数和标签

我能够为所有区域创建drawContours,但我想在每个contouArea下添加一个文本标签并显示相应的大小。

回答

0

这应该让你开始。要遍历所有轮廓,必须使用下面的h_next的for循环。如果你想了解更多我真的推荐Gary Bradski的书Learning OpenCv。这本书是关于轮廓发现的一些很好的例子。

CvMemStorage* contour_storage = cvCreateMemStorage(0); 
CvSeq* contours; 
CvFont font; 
cvInitFont(&font, CV_FONT_HERSHEY_SIMPLEX, 0.6f, 0.6f, 0, 2); 
cvFindContours(sourceImage, contour_storage, &contours, sizeof (CvContour), CV_RETR_CCOMP, CV_CHAIN_APPROX_SIMPLE); 

for (CvSeq* d = contours; d != NULL; d = d->h_next) { 
CvRect iconBox = cvBoundingRect(d, 0); 
CvPoint center = cvPoint(iconBox.x + (iconBox.width/2), iconBox.y + (iconBox.height/2)); 
int area = abs(cvContourArea(d, CV_WHOLE_SEQ)); 
cvPutText(sourceImage,"area", center, &font, CV_RGB(255, 255, 255)); 
} 
+0

嗨diip_thomas, 非常感谢您的回复和建议。我试了一下你的代码,它的工作原理。 :) 我会买这本书,因为我真的需要学习这个图书馆。 –

1

,你知道如何检索您的轮廓中心的位置,您可以使用开放CV功能putText

我想,不是吗”呢?

+0

嗨abarral, 感谢您replying.Unfortunately英语不是我的母语,我觉得我的问题没有得到很好的制定。抱歉。 我想要实现的是测量每个contourArea,并在周围的圆圈上显示相应的位置,并在每个圆圈下方显示相应的区域和文本标签。 我的问题如下: 我如何分别显示contourArea(countours [0] [1] ???)和相应的圆(drawContour)? 如何在每个圆圈下添加文字标签? 我有一个在OpenTev帮助PuText视图,但我不知道如何实现? –