当前位置: 首页 > 编程日记 > 正文

opencv使用cvFindContours提取联通域

转自:http://hi.baidu.com/irmosgarden/blog/item/8ce0174c54b307fad72afcbc.html

// m_imgFeature为黑白目标图像,白色为前景,黑色为背景

// 注意此函数会修改m_imgFeature内容。若其不可更改,应另建立副本

// 1. count contour
CvMemStorage* storage = 0;
storage = cvCreateMemStorage(0);         //开辟默认大小的空间
CvSeq* contour = 0;
cvFindContours( m_imgFeature, storage, &contour, sizeof(CvContour), CV_RETR_EXTERNAL, CV_CHAIN_APPROX_SIMPLE );       // 查找外边缘

int num = 0;
for( ; contour != 0; contour = contour->h_next )
{
   CvRect rect;
   rect = cvBoundingRect(contour,0);       // 转化为点列
   m_arrLine.SetSize(num+1);
   m_arrLine.GetAt(num).SetLine(rect.x,rect.x+rect.width ,rect.y,rect.y+rect.height);
   num = num+1;

for( i = 0; i < contour->total; i++ )
     {
        CvPoint* line = (CvPoint*)cvGetSeqElem(contour,i);
        cvLine( color_dst, line[0], line[1], CV_RGB(255,0,0), 3, 8 );
    }
}

// .release
cvReleaseMemStorage(&storage);

//end of code

cvFindContours的第5个参数

CV_RETR_EXTERNAL    查找外边缘,各边缘以指针h_next相连

CV_RETR_LIST               查找所有边缘(包含内部空洞),各边缘以指针h_next相连

CV_RETR_CCOMP         查找所有边缘(包含内部空洞)

转自:http://blog.sina.com.cn/s/blog_4bc179a80100hs50.html

cvFindContours函数使用说明

函数cvFindContours从二值图像中检索轮廓,并返回检测到的轮廓的个数。first_contour的值由函数填充返回,它的值将为第一个外轮廓的指针,当没有轮廓被检测到时为NULL。其它轮廓可以使用h_next和v_next连接,从first_contour到达。

int cvFindContours( CvArr* image, CvMemStorage* storage, CvSeq** first_contour,
                    int header_size=sizeof(CvContour), int mode=CV_RETR_LIST,
                    int method=CV_CHAIN_APPROX_SIMPLE, CvPoint offset=cvPoint(0,0) );

image
8比特单通道的源二值图像。非零像素作为1处理,0像素保存不变。从一个灰度图像得到二值图像的函数有:cvThreshold,cvAdaptiveThreshold和cvCanny。

storage
返回轮廓的容器。

first_contour
输出参数,用于存储指向第一个外接轮廓。

header_size
header序列的尺寸.如果选择method = CV_CHAIN_CODE, 则header_size >= sizeof(CvChain);其他,则
header_size >= sizeof(CvContour)。

mode
检索模式,可取值如下:
CV_RETR_EXTERNAL:只检索最外面的轮廓;
CV_RETR_LIST:检索所有的轮廓,并将其放入list中;
CV_RETR_CCOMP:检索所有的轮廓,并将他们组织为两层:顶层是各部分的外部边界,第二层是空洞的边界;
CV_RETR_TREE:检索所有的轮廓,并重构嵌套轮廓的整个层次。

method
边缘近似方法(除了CV_RETR_RUNS使用内置的近似,其他模式均使用此设定的近似算法)。可取值如下:
CV_CHAIN_CODE:以Freeman链码的方式输出轮廓,所有其他方法输出多边形(顶点的序列)。
CV_CHAIN_APPROX_NONE:将所有的连码点,转换成点。
CV_CHAIN_APPROX_SIMPLE:压缩水平的、垂直的和斜的部分,也就是,函数只保留他们的终点部分。
CV_CHAIN_APPROX_TC89_L1,CV_CHAIN_APPROX_TC89_KCOS:使用the flavors of Teh-Chin chain近似算法
的一种。
CV_LINK_RUNS:通过连接水平段的1,使用完全不同的边缘提取算法。使用CV_RETR_LIST检索模式能使用此方法。

offset
偏移量,用于移动所有轮廓点。当轮廓是从图像的ROI提取的,并且需要在整个图像中分析时,这个参数将很有用。

讨论部分cvDrawContours中的案例显示了任何使用轮廓检测连通区域。轮廓可以用于形状分析和目标识别——可以参考文件夹OpenCV sample中的squares.c。

相关文章:

朱晔的互联网架构实践心得S1E9:架构评审一百问和设计文档五要素

朱晔的互联网架构实践心得S1E9&#xff1a;架构评审一百问和设计文档五要素 【下载文本PDF进行阅读】 本文我会来说说我认为架构评审中应该看的一些点&#xff0c;以及我写设计文档的一些心得。助你在架构评审中过五关斩六将&#xff0c;助你写出能让人收藏点赞的设计文档。 技…

Mail Archiving Expert电子邮件归档专家

概况作为企业往来最通用的交流工具&#xff0c;企业中有95%以上的文件都是通过邮件来传递与沟通&#xff0c;但是一旦当邮件服务罢工&#xff0c;影响的不仅仅是企业信息交流无法正确与及时的传达&#xff0c;更可能影响企业与客户之间的交易&#xff0c;其后果更是不堪设想&am…

C++中MessageBox的常见用法

转自&#xff1a;http://blog.csdn.net/qiumingbo/archive/2007/05/25/1625324.aspxMessageBox用法消息框是个很常用的控件&#xff0c;属性比较多&#xff0c;本文列出了它的一些常用方法&#xff0c;及指出了它的一些应用场合。1.MessageBox("这是一个最简单的消息框&am…

对标Mobileye!百度Apollo公布L4级自动驾驶纯视觉解决方案Apollo Lite

美国当地时间6月16日-20日&#xff0c;全球计算机视觉及模式识别领域顶级学术会议CVPR 2019&#xff08;Conference on Computer Vision and Pattern Recognition&#xff09;于美国长滩召开。百度Apollo在CVPR 2019公开了自动驾驶纯视觉城市道路闭环解决方案--百度Apollo Lite…

后台服务项目的白盒测试之旅

本文来自阿网易云社区作者&#xff1a;孙婷婷白盒测试起因17年下半年我开始介入部门新项目的服务v2版本的功能测试。刚接手项目时&#xff0c;感到十分头疼&#xff0c;首先它不像我刚接触测试时做的to C端项目&#xff0c;主要是页面展示操作&#xff0c;黑盒测试足够&#xf…

【自然框架 NatureFW】里的两种“映射”方式

自然框架里面采用了两种映射关系&#xff0c;一个是流行的ORM&#xff0c;另一是非主流的“CCM ” &#xff08;我自己想的&#xff0c;呵呵&#xff09;。 先说一下ORM。ORM是O和R的映射关系。也看到很多人写关于ORM的文章&#xff0c;发现好像有个误区。这个误区就是&#x…

ordfilt2函数功能说明

转自&#xff1a;http://www.ilovematlab.cn/thread-91331-1-1.html ordfilt2函数在MATLAB图像处理工具箱中提供了二维统计顺序滤波函数ordfilt2函数。二维统计顺序滤波是中值滤波的推广&#xff0c;对于给定的n个数值&#xff5b;al ,a2,...,an&#xff5d;&#xff0c;将它们…

今晚直播写代码|英伟达工程师亲授如何加速YOLO目标检测

NVIDIA TensorRT是一种高性能深度学习推理优化器和运行时加速库&#xff0c;可以为深度学习推理应用程序提供低延时和高吞吐量。通过TensorRT&#xff0c;开发者可以优化神经网络模型&#xff0c;以高精度校对低精度&#xff0c;最后将模型部署到超大规模数据中心、嵌入式平台或…

TensorFlow Lite:TensorFlow在移动设备与嵌入式设备上的轻量级跨平台解决方案 | Google 开发者大会 2018...

Google 开发者大会 (Google Developer Days&#xff0c;简称 GDD) 是展示 Google 最新开发者产品和平台的全球盛会&#xff0c;旨在帮助你快速开发优质应用&#xff0c;发展和留住活跃用户群&#xff0c;充分利用各种工具获得更多收益。2018 Google 开发者大会于 9 月 20 日和 …

热烈庆祝“mysql 集群数据库架构成功”

坚持了两周&#xff0c;终于在linux下把mysql集群数据库给架起来了&#xff01;下面简单说明下集群数据库原理 第一&#xff1a;集群数据库分MGM,NDBD,SQL 其中MGM是相当于“中央政府”&#xff0c;维持NDBD&#xff0c;SQL等服务器的之间的关系的 NDBD是数据存储的分布化&…

352万帧标注图片,1400个视频,亮风台推最大单目标跟踪数据集

CVPR 2019期间&#xff0c;专注于AR技术&#xff0c;整合软硬件的人工智能公司亮风台公开大规模单目标跟踪高质量数据集LaSOT&#xff0c;包含超过352万帧手工标注的图片和1400个视频&#xff0c;这也是目前为止最大的拥有密集标注的单目标跟踪数据集。论文《LaSOT: A High-qua…

centos7中nfs文件系统的使用

需求&#xff1a;file01:1.1.1.1(内网ip 172.20.103.212)&#xff0c;file02:2.2.2.2(内网ip 172.20.103.211) 这两台机器的 /dev/mapper/myvg-mylv /data 这个盘都挂载到 video01 47.254.78.171, video02 47.254.83.81 这两台机器上即将file01和file02的/data目录都挂载到vid…

在图像变换中用最小二乘法求解仿射变换参数

设原图像为f(x,y)&#xff0c;畸变后的图像为F(X,Y)&#xff0c;要将F(X,Y)恢复为f(x,y)&#xff0c;就是要找到(X,Y)坐标与(x,y)坐标的转换关系&#xff0c;这个转换关系称为坐标变换&#xff0c;表示为(x,y)T(X,Y)。 景物在成像过程中产生的扭曲&#xff0c;会使图像的比例失…

showModalDialog关闭子窗口,并刷新父窗口

一、用法&#xff1a;window.showModalDialog(url,args,dialogWidth650px;scrollno;dialogHeight250px;statusno; ); 二、关闭子窗口&#xff0c;并刷新父窗口 想在showModalDialog打开的窗口中提交表单且不打开新窗口 只需在打开的页面的<head>中加入<base target&qu…

cvDrawContours:在图像上绘制外部和内部轮廓

转自&#xff1a;http://www.aiseminar.cn/html/18/t-618.html?action-uchimage 函数cvDrawContours用于在图像上绘制外部和内部轮廓。当thickness > 0 时&#xff0c;绘制轮廓线&#xff1b;否则填充由轮廓包围的部分。 void cvDrawContours( CvArr *img, CvSeq* contour,…

Python最抢手、Go最有前途,7000位程序员揭秘2019软件开发现状

作者 | 屠敏 整理报告来源 | JetBrains转载自 CSDN&#xff08;ID&#xff1a;CSDNnews&#xff09;互联网的下半场&#xff0c;科技公司为面对更加严峻的竞争环境&#xff0c;越来越重视开源节流。而对于身处其中且撑起 IT 半边天的技术人&#xff0c;如今如何了&#xff1f;从…

main函数参数

参考&#xff1a;Where Does GCC Look to Find its Header Files? 命令行参数 VS 程序参数 ./a.out 1 2 3 4 5 6 1 2 3 4 5 6是程序参数&#xff0c;是传给a.out这个程序处理的&#xff0c;main里面的argv来接收 ./a.out 1 2 3 4 5 6完整的这一串才是命令行参数 代码演示 如下…

转载 load-on-startup的用法

转载于:http://www.ituring.com.cn/article/50477 Web.xml中的Servlet中的配置&#xff1a; <servlet><servlet-name>createBlog</servlet-name><servlet-class>com.cnblogs.CreateBlog</servlet-class><load-on-startup>0</load-on-s…

商汤62篇论文入选CVPR 2019,一览五大方向最新研究进展

&#xff08;图源自视觉中国&#xff09;作为与ICCV、ECCV并称为计算机视觉领域三大国际会议之一&#xff0c;本届CVPR大会共收到5265篇有效投稿&#xff0c;接收论文1300篇&#xff0c;接收率为25.2%。商汤科技CVPR 2019录取论文在多个领域实现突破作为国内CV领域的明星公司&a…

cvSaveImage保存图像

转自&#xff1a;http://blog.csdn.net/luhuillll/archive/2009/10/28/4739471.aspx opencv保存图象直接使用cvSaveImage,这个函数.但是windows位图的图象格式是RGBt格式,而opencv的图象存储格式是BGR. 这样导致保存的图象失真.在windows下查看图象好象变绿色了.所以在保存图象…

软工实践原型设计——PaperRepositories

软工实践原型设计——PaperRepositories 写在前面 本次作业链接队友&#xff08;031602237吴杰婷&#xff09;博客链接pdf文件地址原型设计地址(加载有点慢...)结对成员:031602237吴杰婷 & 031602636许舒玲原型设计工具:Axure RP 8PSP表格 PSP3.1Personal Software Process…

nagios+sendmail配置

以下为自己安装测试过的&#xff0c;如果有问题&#xff0c;大家一起讨论 系统环境&#xff1a;centos6.2 64位 最小化安装 一 安装nagios 见附件&#xff1a;nagios官方文档&#xff08;nagios_nrpe20120929_web.pdf&#xff09; 二 安装配置sendmail 我用hotmail邮箱接收nagi…

真正的博士是如何参加AAAI, ICML, ICLR等AI顶会的?

&#xff08;图源自视觉中国&#xff09;整理 | 一一出品 | AI科技大本营&#xff08;ID:rgznai100&#xff09;源于对学术的热爱&#xff0c;让很多人走上了博士这条求索之路&#xff0c;而热爱会让他们勤奋付出&#xff0c;勤奋让他们成为佼佼者。在刚刚过去的 ICML 大会上&a…

matlab图像滤波

转自&#xff1a;http://hi.baidu.com/wang%5Fpw/blog/item/36354a637ac87b48eaf8f879.html clc; clear all; Iimread(eight.tif); % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % %用中值滤波&#xff0c;多维滤波&#xff0c;使用中心为-4,-8的拉普 % %拉…

​2018你不得不看的国内CRM软件排行榜

2018你不得不看的国内CRM软件排行榜短短几年时间&#xff0c;CRM在中国的发展就已经非常迅猛&#xff0c;现在已经成为了管理软件增长最快的产业。在我们总结的CRM软件排行榜中&#xff0c;腾讯企点的CRM软件赫然摆在前列。而CRM在中国中小企业已经突破千万家&#xff0c;占全国…

二维物体形状识别方法比较

二维物体形状识别方法比较 摘 要 针对模式识别中二维物体的形状识别问题&#xff0c;以二值图像中的物体形状为主要研究对象&#xff0c;依次从特征提取、分类器设计两个主要层面对形状识别方法进行了全面综述&#xff0c;并分析了国内外研究现状&#xff0c;特别是近年来所取…

个人知识管理的10个误区

100个人&#xff0c;有100个对个人知识管理的理解。 当我们热烈的讨论“个人知识管理”的时候&#xff0c;也许我们讨论的根本不是一个东西&#xff1a;你理解的个人知识管理和他理解的个人知识管理根本不同。 拙作《你的知识需要管理》试图去建立一个个人知识管理内容的框架&a…

关于比特币现金升级问题讨论不断升温

过去几周&#xff0c;比特币现金的支持者一直在讨论定于今年11月15日推出的硬叉。大多数人都明白&#xff0c;目前有两个阵营有着完全不同的愿景。看来双方在短期内不会达成妥协。最近&#xff0c;随着时间的推移&#xff0c;双方都在测试某些特性&#xff0c;并发表了关于特定…

阿里AI摘图像识别竞赛WebVision桂冠,万物识别准确率创世界纪录

近日&#xff0c;第三届图像识别竞赛WebVision中&#xff0c;阿里AI击败了全世界150多支参赛队伍&#xff0c;获得冠军。 WebVision由谷歌、美国卡耐基梅隆大学、苏黎世联邦理工大学等机构联合全球视觉技术领域顶级学术会议CVPR发起&#xff0c;是目前图像识别领域最权威的竞赛…

做人工智能必看的45篇论文 | 附下载地址

而AI领域的发展会是IT中最快的。我们所看到的那些黑客技&#xff0c;其后面无不堆积了大量的论文。而且都是最新、最前沿的论文。从某种调度来讲&#xff0c;他们所用的技术跟书籍里的内容确实不是一个时代。要想与时俱进&#xff0c;就必须改变思路——从论文入手。今天给大家…