2019-7-29 opencv图像处理9-轮廓4(Contours)更多函数(凸缺陷/点至多边形测试/图形匹配-hu矩)

本文详细介绍了OpenCV中与轮廓处理相关的函数,包括如何检测凸缺陷、进行点至多边形测试、形状匹配以及理解hu矩的概念。通过示例展示了如何使用cv.convexityDefects()、Point Polygon Test、cv.matchShapes()和cv.HuMoments()进行图像分析和形状比较,强调了hu矩在形状匹配中的平移、旋转和尺度不变性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

官网参见https://docs.opencv.org/3.4.1/d5/d45/tutorial_py_contours_more_functions.html

1.凸缺陷

我们已经了解过凸包概念https://blog.youkuaiyun.com/weixin_42555985/article/details/97115338。
物体和凸包之间的任何偏差就称为凸缺陷。
opencv提供cv.convexityDefects()函数找到凸缺陷。
调用方式如下:

hull = cv.convexHull(cnt,returnPoints = False)
defects = cv.convexityDefects(cnt,hull)

cv.convexHull()函数获取凸包,其中cnt是利用cv2.findContours()函数获取的轮廓。
cv.convexityDefects()函数就是把cnt轮廓和hull凸包进行比较,获得凸缺陷。

为了找到凸缺陷,convexHull()函数必须传入returnPoints = False

函数返回一个数组,每一行包含的值是:起始点,终点,最远的点,最远点的近似距离。我们可以在图像中显示它。起点和终点画一根直线,然后在最远的点画个圆。
注意:返回值是轮廓的索引点,可以在cnt中找到对应的值。

例,找到凸缺陷

# -*- coding: cp936 -*-
import cv2 
import numpy as np
from matplotlib import pyplot as plt


img = cv2.imread('defects.jpg')
img_gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
ret,thresh = cv2.threshold(img_gray, 127, 255,0)
im2,contours,hierarchy = cv2.findCo
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值