(1条消息) 叶片轮廓提取代码
1. 提取连续区域
介绍: 在物体检测和识别程序中,第一步通常是生成二值图像,找到感兴趣物体所在的位置,下一步就是从由1和0的像素集合中提取物体。
例子代码:
#include
效果图
2. 计算区域的形状描述子
实现原理: - 在表示和定位图像中区域的方法,边界框可能是最简洁的,它定义是能完全包含该形状的最小垂直矩形,比较边界框的高度和宽度,可以获得物体在垂直和水平方向的特征(例如可以通过计算高度和宽度的比例,分辨出一幅图像是汽车还是行人),最小覆盖圆通常在只需要区域尺寸和位置的近似值时使用。 - 如果需更加紧凑地表示区域的形状,可采用多边形逼近,在创建时要制定精确度参数,表示形状与对应的简化多边形之间能接受的最大距离。它是 approxPolyDP 函数的第四个参数,返回结果是 Point 类型向量,表示多边形的顶点个数,在画这个多边形时,要迭代遍历整个向量,并在顶点之间画直线,把它们逐个连接起来。 - 形状的凸包是包含该形状的最小凸边形,可以把它看作一条绕在区域周围的橡皮筋。 - 轮廓矩是形状结构分析中常用的数学模型,它表示物体形状的紧凑程度,常用于特征识别,可以用该结构来获得每个区域的重心。
例子代码:
#include
效果图
3. 四边形检测
介绍: MSER 特征是一种高效的从图像中提取形状工具,下面的例子是检测建筑物的窗户。
例子代码:
#include
效果图
4. 综合例子
实现过程: - 提取图像边缘 - 发现轮廓 - 计算每个轮廓对象的矩 - 计算每个对象的中心、弧长和面积
例子代码:
#include
效果图
5. 补充
要检测矩形只需要测量相邻的夹角,并且排除夹角与90度相差很大的四边形即可。
计算其它结构化属性的函数: - minAreaRect - 计算最小覆盖自由度矩形 - contourArea - 估算轮廓的面积(内部的像素数量) - pointPolygonTest - 判断一个点在轮廓的内部还是外部 - matchShapes - 度量两个轮廓之间的相似度。
所有这些度量属性的方法可以有效地结合起来,用于更高级的结构分析
欢迎关注我的微信公众号“OpenCV图像处理算法”,主要是记录自己学习图像处理算法的历程,包括特征提取、目标跟踪、定位、机器学习和深度学习,每一个例子都会提供源码和例子所用的资料,欢迎同行的同学关注我和我一起虚度光阴吧!!!