图像轮廓

一、轮廓查找与绘制

1.图像轮廓的概念

2.查找图像轮廓

寻找轮廓的操作一般用于二值化图,所以通常会使用阈值分割或Canny边缘检测先得到二值图。

3.cv2.findContours()函数

contours,hierarchy=cv2.findContours(image,mode,method)

contours:返回的轮廓。例如contours[i]表示第i个轮廓。

hierarchy:图像的拓扑信息(轮廓层次)。

image:输入的图像。 mode:轮廓搜索模式:决定了轮廓的提取方式。

method:轮廓近似方法:决定了如何表达轮廓。

4.绘制图像轮廓

image=cv2.drawContours(image, contours, contourIdx, color, thickness=None, lineType=None, hierarchy=None, maxLevel=None, offset=None)

 例如:

img=cv2.drawContours(img,contours,-1,(0,255,0),5)绿色轮廓线,线条粗细为5(若为-1,则会将轮廓内部进行填充)

二、计算轮廓的面积及长度

1.矩特征

比较两个轮廓最简单的方法是比较二者的轮廓矩。轮廓矩代表了一个轮廓、一幅图像、一组点集的全局特征。矩信息包含了对应对象不同类型的几何特征,例如大小、位置、角度、形状等。矩特征被广泛地应用在模式识别、图像识别等方面。

2.计算轮廓的面积

3.计算轮廓的长度

三、使用Hu特征进行形状匹配

1.Hu特征

Hu矩是归一化中心矩的线性组合,Hu矩再图像旋转,缩放,平移等操作后,仍能保持矩的不变性,经常使用 Hu 矩来识别图像的特征。在 OpenCV 中,使用函数 cv2.HuMoments()可以得到 Hu 距。该函数使用 cv2.moments()函数的返回值作为参数,返回 7 个 Hu 矩值。

2.形状匹配

通过Hu 矩可以来判断两个对象的一致性。但是结果比较抽象,OpenCV 提供了 cv2.matchShapes() 对两个对象的Hu矩进行比较

四、轮廓的几何形状拟合

1.矩形包围框

retval = cv2.boundingRect( array )

retval:矩形边界左上角顶点的坐标值及矩形边界的宽度和高度。

array:灰度图像或轮廓。

2.最小外包矩形框

retval =cv2.minAreaRect( points )

retval:回的矩阵特征信息,结构是(最小外接矩形的中心(x,y),(宽度,高度),旋转角度)。

points:轮廓

3.最小包围圆形

center, radius = cv2.minEnclosingCircle( points )

center:圆形 

radius:半径

points:轮廓

4.最优拟合椭圆

retval = cv2.fitEllipse( points )

center:RotatedRect 类型的值,这个是拟合椭圆的外界矩形,包含外接矩形的质心,宽,高,旋转角度等参数信息,这些信息与椭圆的中心点,轴长度,旋转角度等信息吻合

points:轮廓

5.最优拟合直线

line = cv2.fitLine( points, distType, param, reps, aeps )

6.逼近多边形

在数字化时,要对曲线进行采样,即在曲线上取有限个点,将其变为折线,并且能够在一定程度上保持原有的形状。

五、凸包

1.凸包绘制

获取凸包

2.凸缺陷检测

凸缺陷

3.轮廓常见特征值

宽高比
Extend
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值