我编写了一段代码,找到连接的组件,并使用cvPutText用字母'R'标记连接的组件。现在取代Letter'R',我需要根据连接组件的数量打印1,2,3等数字。之后,我需要找到区域并将连接组件的区域打印为文本。任何人都可以帮我这个吗?
这是我的代码:
imagelab=cvCreateImage(cvGetSize(mor),IPL_DEPTH_8U,3);
CvMemStorage* contour_storage = cvCreateMemStorage(0);
CvSeq* contours;
CvFont font;
cvInitFont(&font, CV_FONT_HERSHEY_SIMPLEX, 0.6f, 0.6f, 0, 2);
cvFindContours(mor, contour_storage, &contours, sizeof (CvContour), CV_RETR_CCOMP, CV_CHAIN_APPROX_SIMPLE,cvPoint(0,0));
cvZero(imagelab);
for( ; contours != NULL; contours = contours->h_next )
{
CvScalar color = CV_RGB( rand()&255, rand()&255, rand()&255 );
cvDrawContours( imagelab, contours, color, CV_RGB(255,255,255), -1, CV_FILLED, 8 ,cvPoint(0,0));
CvRect iconBox = cvBoundingRect(contours, 0);
CvPoint center = cvPoint(iconBox.x + (iconBox.width / 2), iconBox.y + (iconBox.height / 2));
int area = abs(cvContourArea(contours, CV_WHOLE_SEQ));
cvPutText(imagelab,"R", center, &font, CV_RGB(255, 255, 255));
}
感谢名单。
答案 0 :(得分:0)
有很多方法可以将整数转换为字符串。只需使用一个柜台。我的青睐是使用stringstream ep>
for(int ncount = 0 ; contours != NULL; contours = contours->h_next, ncount++ )
...
std::stringstream str;
str << ncount;
cvPutText(imagelab,str.str(), center, &font, CV_RGB(255, 255, 255));