用OpenCv找出最大连通域,并对其进行连通域进行ROI opencv roi操作

  由于项目需要,要对图像中的最大连通域进行标定,并且存储。首先需要使用cvFindCountour对边缘进行标定,其实它的原理就是连通域的边缘提取;其次就是对连通域进行大小判断找出最大的连通域;最后当然就是进行Rect并且ROI了。如果有需要可以进行存储。直接上源码吧。

#include "cv.h"
#include "cxcore.h"
#include "highgui.h"

int main( int argc, char** argv )
{
//声明IplImage指针
IplImage* pImg =cvLoadImage("e:/black.jpg",0);
IplImage* pContourImg = NULL;
CvMemStorage * storage =cvCreateMemStorage(0);
CvSeq * contour = 0;
CvSeq *contmax = 0;
int mode = CV_RETR_EXTERNAL;
cvShowImage( "src", pImg );
//为轮廓显示图像申请空间
//3通道图像,以便用彩色显示
pContourImg =cvCreateImage(cvGetSize(pImg),
IPL_DEPTH_8U,
3);
//copy source image and convert it to BGRimage
cvCvtColor(pImg, pContourImg, CV_GRAY2BGR);
//查找contour
cvFindContours( pImg, storage,&contour, sizeof(CvContour),
mode, CV_CHAIN_APPROX_SIMPLE,cvPoint(0,0));
//将轮廓画出
cvDrawContours(pContourImg, contour,
CV_RGB(255,0,0), CV_RGB(255, 0,0),
2, 2, 8, cvPoint(0,0));
int area,maxArea = 10;//设面积最大值大于10Pixel
for(;contour;contour =contour->h_next)
{
area = fabs(cvContourArea(contour, CV_WHOLE_SEQ )); //获取当前轮廓面积
printf(" area == %lfn",area);
if(area >maxArea)
{
contmax =contour;
maxArea =area;
}
}
CvRect aRect = cvBoundingRect( contmax, 0);
cvSetImageROI( pContourImg,aRect);
//显示图像
cvShowImage( "contour", pContourImg );
cvSaveImage("e:/contour.jpg",pContourImg);
cvWaitKey(0);

//销毁窗口
cvDestroyWindow( "src" );
cvDestroyWindow( "contour" );
//释放图像
cvReleaseImage( &pImg );
cvReleaseImage( &pContourImg);
cvReleaseMemStorage(&storage);

return 0;
}

处理前的连通域

处理后的连通域


  

爱华网本文地址 » http://www.aihuau.com/a/25101014/231966.html

更多阅读

转载 中国改革最大的红利,首先在于政治 易基改革红利

原文地址:中国改革最大的红利,首先在于政治作者:anmin0001中国改革最大的红利,首先在于政治一、财政收入和土地出让收入高增长的时代结束今年5月,全国财政收入12749亿元,同比增长6.2%,终于恢复正增长,止住了连续两个月的跌势了。而社会各

程益中:中国最大的糟粕,就是所谓做人的学问

程益中:中国最大的糟粕,就是所谓的做人学问这是徐刚老总发的一条微信,特转发与大家分享。作者程益中(《南方都市报》和《新京报》创办人之一)。本文为作者答记者问。1.南方都市报和新京报是我过去的沧海,而体育画报中文版是我现在的桑田,沧

图 世界上最大的睾丸...... 世界上最大的头皮屑图

世界上最大的睾丸......动物界新诞生了一位破纪录者,它就是图伯鲁斯灌丛蟋蟀。科学家宣布,相对于体重而言,这种蟋蟀拥有世界上已知的最大的睾丸,重量占其体重的14%。根据他们的研究,破纪录的睾丸可能允许雄性图伯鲁斯灌丛蟋蟀接二连三地

中国9个变化最大的城市 中国最大城市排名

本月15日,美国《福布斯》杂志评出中国10个变化最大的城市,深圳、广州、香港分列前三,重庆排名第十,成为中西部唯一入选城市。福布斯中国上海分社社长范鲁贤先生表示,这是对重庆近年来发展成就的肯定。NO1. 深圳市名深圳市城市面积全市面

声明:《用OpenCv找出最大连通域,并对其进行连通域进行ROI opencv roi操作》为网友我知道你分享!如侵犯到您的合法权益请联系我们删除