opencv寻找轮廓 python_基于opencv的轮廓匹配算法
时间: 2023-07-07 15:30:44 浏览: 134
Python库 | opencv_python_headless-4.3.0.38-cp38-cp38-win32.whl
5星 · 资源好评率100%
OpenCV提供了很多寻找轮廓的函数,其中最常用的是 `findContours` 函数。
下面是一个基于OpenCV的轮廓匹配算法的示例代码,其中使用了 `findContours` 函数寻找图像中的轮廓,并使用 `matchShapes` 函数计算不同轮廓之间的距离:
```python
import cv2
# 读取模板图像和待匹配图像
template = cv2.imread("template.png")
target = cv2.imread("target.png")
# 转换为灰度图像
template_gray = cv2.cvtColor(template, cv2.COLOR_BGR2GRAY)
target_gray = cv2.cvtColor(target, cv2.COLOR_BGR2GRAY)
# 二值化处理
_, template_thresh = cv2.threshold(template_gray, 127, 255, cv2.THRESH_BINARY)
_, target_thresh = cv2.threshold(target_gray, 127, 255, cv2.THRESH_BINARY)
# 寻找轮廓
template_contours, _ = cv2.findContours(template_thresh, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
target_contours, _ = cv2.findContours(target_thresh, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
# 计算轮廓之间的距离
for template_contour in template_contours:
for target_contour in target_contours:
distance = cv2.matchShapes(template_contour, target_contour, cv2.CONTOURS_MATCH_I1, 0)
print("distance:", distance)
```
在上述代码中,首先读取模板图像和待匹配图像,并将它们转换为灰度图像。然后,对它们进行二值化处理,以便寻找轮廓。接着,使用 `findContours` 函数分别寻找模板图像和待匹配图像中的轮廓。最后,使用 `matchShapes` 函数计算不同轮廓之间的距离,并输出结果。
阅读全文