OpenCV轮廓特性(二)
来源:互联网 发布:中国移动有5g网络吗 编辑:程序博客网 时间:2024/05/25 08:13
在上一篇的博文中,我们主要给出了cvFindContours()和cvDrawContours()函数的基本用法,结合示例程序,分析了获得图像轮廓和画出显示轮廓的大致的程序思路。在获取轮廓之后,我们要重点分析轮廓的一些性质。轮廓有很多特性,下面我们来逐一看这方面的特性。
(1)轮廓的多边形逼近
轮廓的多边形逼近指的是,使用多边形近似地来表示一个轮廓,这样做的目的在于减少轮廓的顶点数目。OpenCV中给出了一个逼近算法,这个算法的实现函数是cvApproxPoly()。
CvSeq* cvApproxPoly( const void* src_seq, int header_size, CvMemStorage* storage, int method,//method的取值上篇博文中介绍了 double parameter, //表示逼近的精度 int recursive=0 //指定是否针对全部的轮廓,取0表示只处理src_seq指向轮廓);
简要介绍这个逼近算法的思路,如下图所示:
算法先从轮廓(图b)上选择2个最远的点,然后将2个连成一个线段(图c),然后再查找轮廓上到线段距离最远的点,添加到逼近后的新轮廓(图d),算法反复迭代,不断的将最远的点添加到结果中,直到所有的点到多边形的最短距离小于parameter参数指定的精度。
(2)轮廓的关键点
轮廓的关键点指的是那些包含曲线信息比较多的点,在OpenCV中主要给出了IPAN算法,这个算法在OpenCV中给出了函数cvFindDominantPoints()来实现
CvSeq* cvFindDominantPoints( CvSeq* contour, CvMemStorage* storage, int method=CV_DOMINANT_IPAN, double parameters1=0, double parameters2=0, double parameters3=0, double parameters4=0//参数分别为最短距离,最长距离,相邻距离,最大角度);
IPAN算法通过扫描轮廓上并在曲线内部使用可能顶点构造三角形来实现。对于三角形的大小和张角有特殊要求,在比某一特定的全局阈值和它的相邻点的张角小的情况下,具有大张角的点被保留。
(3)轮廓的周长和面积
若要得到轮廓的长度,可以使用以下的函数cvArcLength();
与轮廓的长度相关联的就是轮廓的面积了,可以用函数cvContourArea()。
(4)轮廓的边界
周长和面积只是轮廓的简单特性,更复杂一点的特性应该是矩形边界框、圆形边界框或椭圆边界框。有两种方法可以得到矩形边界框,但是圆形和椭圆形边界框只有一种方法。
矩形:在图像处理系统中提供了一种叫Rectangle的矩形,不过它只能表达边垂直或水平的特例;但也有一种矩形是box的,可以表示任何倾斜的情况。
如果要获取轮廓的Rectangle,可以使用cvBoundingRect()函数。
如果要获取轮廓的Box,可以使用cvMinAreaRect2()函数。
圆形:如果要获取轮廓的圆形边界框,可以使用cvMinEnclosingCircle函数。
椭圆:如果要获取轮廓的椭圆边界框,可以使用cvFitEllipse2函数。
上面就是介绍了如何去分析一个轮廓的特性,分别从周长、面积、边界框等角度去分析轮廓的特征,而这些特征的提取是为了接下来更好的对这些轮廓特征的操作,因此在接下来,我们再去讨论下对轮廓的典型操作,就是轮廓的匹配。
- OpenCV轮廓特性(二)
- OpenCV基础08(轮廓+轮廓特性)
- OpenCV入门(二十六)-- 轮廓检测
- OpenCV 删除轮廓的方法(二)
- 【OpenCV学习笔记】二十五、轮廓查找与绘制(二)访问轮廓中每个点
- Opencv获取二值图像轮廓
- OpenCV入门(二十七) -- 轮廓例子
- OpenCV入门(二十九) -- 轮廓匹配
- opencv学习篇(8)轮廓的查找、表达、绘制、特性及匹配
- OpenCV轮廓查找(一)
- OpenCV中的轮廓(2)
- openCV轮廓
- OPENCV轮廓
- OpenCV 轮廓
- opencv:轮廓
- OpenCV-轮廓
- 【OpenCV学习笔记】二十四、轮廓查找与绘制(一)
- Opencv(Python) 教程-轮廓(2)轮廓特征求取
- [nodejs]svn命令行中避免进入用户交互出现卡住的情况
- HttpServletResponse简介
- OC @property的内存管理
- 让UIView、UIWindow等透明遮挡不影响下面视图操作方法
- 使用 bibtex 管理参考文献
- OpenCV轮廓特性(二)
- Iphone App 按比例手动布局(待完善)
- linux memcached启动
- 欢迎使用CSDN-markdown编辑器
- [BZOJ1026]SCOI2009 windy数|数位DP
- 字符串及处理之三: 使用TCHAR系列方案
- Apache开源项目分类列表
- sqlite数据库的使用
- UI UIView进度条,模拟手机充电功能