關於二值化之後圈出白色區域的演算法
阿新 • • 發佈:2018-11-14
相關的演算法以及理論:影象處理、計算機視覺、機器學習等
版主: bebekifis, chai2010, lswang
發表回覆 4 篇帖子 • 分頁: 1 / 1關於二值化之後圈出白色區域的演算法
如圖, 請問如果我想用圓圈圈出這些白色大於50*50的區域,在演算法上怎麼實現?(PS*之前發錯版塊了 )想出了幾個方法,但是由於邊緣的不規則,那幾個方法都不太適合,由於著急交作業所以請教哪位大俠給點提示,謝謝各位好心人!
做了個CONTOUR, 然後把較小面積的輪廓濾掉只留大的。但是怎麼能用畫圖工具把剩下的圈出來呢?
- niuniu236
- OpenCV小學生
- 帖子: 16
- 註冊: 2009-11-29 12:10
Re: 關於二值化之後圈出白色區域的演算法
先findContour,然後draw,
my blog:
http://blog.csdn.net/carson2005 QQ:1079185264
- carson2005
- OpenCV博士
- 帖子: 516
- 註冊: 2008-10-01 19:22
Re: 關於二值化之後圈出白色區域的演算法
可以參考下面的程式碼。CvSeq* contour=NULL;
cvClearMemStorage( storage );
cvFindContours( mask, storage, &contour, sizeof(CvContour), CV_RETR_EXTERNAL, CV_CHAIN_APPROX_SIMPLE );
cvZero(mask);
CvScalar color = CV_RGB( 255,255,255 ); // Color for contour drawing
double contArea;
double imgArea = mask->width * mask->height;
// contour now contains a CvSequence of all of the contours
for( ; contour != 0; contour = contour->h_next )
{
contArea = fabs(cvContourArea( contour, CV_WHOLE_SEQ ));
if (contArea >= 40) {
cvDrawContours( mask, contour, color, color, 0, -1, 8 );
cvSmooth(mask, mask);
CvRect rect = cvBoundingRect( contour, 0 );
cvRectangle( mask, cvPoint(rect.x, rect.y + rect.height), cvPoint(rect.x + rect.width, rect.y), CV_RGB(200, 0, 200), 1, 8, 0 );
cvRectangle( mask, cvPoint(rect.x, rect.y + rect.height), cvPoint(rect.x + rect.width, rect.y), CV_RGB(200, 0, 200), 1, 8, 0 );
}
}