opencv实现轮廓匹配
时间: 2023-12-13 19:33:49 浏览: 50
轮廓匹配是指在两个轮廓之间寻找相似性的过程。OpenCV提供了matchShapes()函数来计算两个轮廓之间的相似性。该函数返回一个值,称为Hu矩,用于表示两个轮廓之间的相似性。Hu矩越小,表示两个轮廓越相似。下面是一个使用matchShapes()函数进行轮廓匹配的例子:
```python
import cv2
# 读取两张图片
img1 = cv2.imread("img1.jpg")
img2 = cv2.imread("img2.jpg")
# 转换为灰度图像
gray1 = cv2.cvtColor(img1, cv2.COLOR_BGR2GRAY)
gray2 = cv2.cvtColor(img2, cv2.COLOR_BGR2GRAY)
# 二值化
ret, binary1 = cv2.threshold(gray1, 127, 255, cv2.THRESH_BINARY)
ret, binary2 = cv2.threshold(gray2, 127, 255, cv2.THRESH_BINARY)
# 查找轮廓
contours1, hierarchy1 = cv2.findContours(binary1, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
contours2, hierarchy2 = cv2.findContours(binary2, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
# 计算轮廓相似性
match = cv2.matchShapes(contours1[0], contours2[0], cv2.CONTOURS_MATCH_I1, 0)
# 显示结果
print("Match value:", match)
cv2.imshow("img1", img1)
cv2.imshow("img2", img2)
cv2.waitKey()
cv2.destroyAllWindows()
```