0

我正在尝试开发一个程序来计算数量contourAreas作为大小的函数并将其显示给用户。

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

4

2 回答 2

0

您可以使用打开的 cv 函数putText

我想您知道如何检索轮廓中心的位置,不是吗?

于 2012-08-27T14:18:36.833 回答
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));
}
于 2012-08-31T16:19:49.590 回答