我正在尝试开发一个程序来计算数量contourAreas
作为大小的函数并将其显示给用户。
我能够创建drawContours
所有区域,但我想在每个区域下添加一个文本标签contouArea
并在那里显示相应的大小。
您可以使用打开的 cv 函数putText
我想您知道如何检索轮廓中心的位置,不是吗?
这应该让你开始。要遍历所有轮廓,您必须在下面使用带有 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));
}