OpenCV计算连通区域数目与最大连通区域并标示出
来源:互联网 发布:廖雪峰python视频下载 编辑:程序博客网 时间:2024/06/06 09:16
申明,本文非笔者原创,原文转载自:http://blog.sina.com.cn/s/blog_5ca0198e0101hrt8.html
[cpp] view plaincopy
- #include
- #include
- #include
-
- #pragma
comment(lib, "cv.lib") - #pragma
comment(lib, "cxcore.lib") - #pragma
comment(lib, "highgui.lib") -
- int
main( intargc, char**argv ) - {
-
IplImage* src = cvLoadImage(".\\wind.png", CV_LOAD_IMAGE_GRAYSCALE); -
IplImage* dst = cvCreateImage(cvGetSize(src), 8, 3); -
CvMemStorage* storage = cvCreateMemStorage(0); -
CvSeq* contour = 0; -
cvThreshold(src, src,120, 255, CV_THRESH_BINARY); // 二值化 -
cvNamedWindow("Source", 1); -
cvShowImage("Source", src); -
// 提取轮廓 -
int contour_num sizeof(CvContour),= cvFindContours(src, storage, &contour, CV_RETR_CCOMP, CV_CHAIN_APPROX_SIMPLE); -
cvZero(dst); // 清空数组 -
CvSeq *_contour = contour; -
double maxarea = 0; -
double minarea = 100; -
int m = 0; -
for( ; contour != 0; contour = contour->h_next ) -
{ -
-
double tmparea = fabs(cvContourArea(contour)); -
if(tmparea < minarea) -
{ -
cvSeqRemove(contour, 0); // 删除面积小于设定值的轮廓 -
continue; -
} -
CvRect aRect = cvBoundingRect( contour, 0 ); -
if ((aRect.width/aRect.height)<1) -
{ -
cvSeqRemove(contour, 0); //删除宽高比例小于设定值的轮廓 -
continue; -
} -
if(tmparea > maxarea) -
{ -
maxarea = tmparea; -
} -
m++; -
// 创建一个色彩值 -
CvScalar color = CV_RGB( 0, 255, 255 ); -
-
//max_level 绘制轮廓的最大等级。如果等级为0,绘制单独的轮廓。如果为1,绘制轮廓及在其后的相同的级别下轮廓 -
//如果值为2,所有的轮廓。如果等级为2,绘制所有同级轮廓及所有低一级轮廓,诸此种种 -
//如果值为负数,函数不绘制同级轮廓,但会升序绘制直到级别为abs(max_level)-1的子轮廓 -
cvDrawContours(dst, contour, color, color, -1, 1, 8); //绘制外部和内部的轮廓 -
} -
contour = _contour; -
int count = 0; -
for(; contour != 0; contour = contour->h_next) -
{ -
count++; -
double tmparea = fabs(cvContourArea(contour)); -
if (tmparea == maxarea) -
{ -
CvScalar color = CV_RGB( 255, 0, 0); -
cvDrawContours(dst, contour, color, color, -1, 1, 8); -
} -
} -
printf("The total ,number of contours is:%d" count); -
cvNamedWindow("Components", 1); -
cvShowImage("Components", dst); -
cvWaitKey(0); -
cvDestroyWindow("Source"); -
cvReleaseImage(&src); -
cvDestroyWindow("Components"); -
cvReleaseImage(&dst); -
-
return 0; - }
0 0
- OpenCV计算连通区域数目与最大连通区域并标示出
- OpenCV计算连通区域数目与最大连通区域并标示出
- OpenCV计算连通区域数目与最大连通区域并标示出
- OpenCV计算连通区域数目与最大连通区域并标示出
- OpenCV计算连通区域数目与最大连通区域并标示出
- OpenCV计算连通区域数目与最大连通区域并标示出
- OpenCV计算连通区域数目与最大连通区域并标示出
- 使用OpenCV查找二值图中最大连通区域
- opencv 分水岭 连通区域
- 连通区域计算
- Matlab找最大连通区域
- 连通区域
- 【matlab】求图像的最大连通区域
- matlab找到图像的最大连通区域
- opencv 连通区域的最小外接矩形
- opencv 连通区域边界坐标提取
- OPENCV中提取连通区域轮廓
- OPENCV去除小连通区域,去除孔洞
- 信号
- HDU 4605 Magic Ball Game (在线主席树|| 离线 线段树)
- OpenCV_连通区域分析(Connected Component Analysis-Labeling)
- ZOJ-1745
- 数据结构之顺序栈
- OpenCV计算连通区域数目与最大连通区域并标示出
- 顺序容器
- poj 2728 Desert King(最优比例生成树)
- (18)JS的定时器的用法
- DNS安全 -月宫吴刚
- C#连接SQL Server 数据库
- TLV-简单的数据传输协议
- Android手机自动发送短信
- VC++禁止ALT+F4的关闭操作