opencv matchshape 用法案例, 给出python代码
时间: 2024-01-19 10:02:49 浏览: 124
下面是一个使用OpenCV的matchShapes函数的Python代码示例:
```python
import cv2
# 读取模板图像和目标图像
template = cv2.imread('template.png', 0)
target = cv2.imread('target.png', 0)
# 二值化图像
ret, thresh1 = cv2.threshold(template, 127, 255, 0)
ret, thresh2 = cv2.threshold(target, 127, 255, 0)
# 寻找轮廓
contours1, hierarchy1 = cv2.findContours(thresh1, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
contours2, hierarchy2 = cv2.findContours(thresh2, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
# 计算Hu矩
moments1 = cv2.moments(contours1[0])
hu1 = cv2.HuMoments(moments1).flatten()
moments2 = cv2.moments(contours2[0])
hu2 = cv2.HuMoments(moments2).flatten()
# 计算形状相似度
d = cv2.matchShapes(contours1[0], contours2[0], cv2.CONTOURS_MATCH_I1, 0)
# 打印结果
print("Hu moments of template: ", hu1)
print("Hu moments of target: ", hu2)
print("Shape similarity: ", d)
```
在这个示例中,我们使用matchShapes函数计算了模板图像和目标图像的形状相似度。我们首先将图像转换为二值图像,然后寻找它们的轮廓。然后,我们计算每个轮廓的Hu矩,然后使用matchShapes函数计算它们之间的形状相似度。最后,我们打印了结果,包括Hu矩和形状相似度。
阅读全文