opencv-python 模板匹配
时间: 2023-09-29 20:03:19 浏览: 119
模板匹配是一种在图像中查找模板位置的技术。OpenCV中提供了多种模板匹配方法,其中最常用的是基于均方差和相关性的方法。
下面是一个使用基于均方差的模板匹配的示例代码:
``` python
import cv2
import numpy as np
# 读取图像和模板
img = cv2.imread('image.jpg')
template = cv2.imread('template.jpg')
# 获取模板的宽高
h, w = template.shape[:2]
# 使用matchTemplate函数进行匹配
res = cv2.matchTemplate(img, template, cv2.TM_SQDIFF_NORMED)
# 获取匹配结果的最小值和最大值及其坐标
min_val, max_val, min_loc, max_loc = cv2.minMaxLoc(res)
# 打印匹配结果
print('Matched location:', min_loc)
# 在原图中用矩形框标出匹配位置
top_left = min_loc
bottom_right = (top_left[0] + w, top_left[1] + h)
cv2.rectangle(img, top_left, bottom_right, (0, 255, 0), 2)
# 显示结果
cv2.imshow('result', img)
cv2.waitKey(0)
cv2.destroyAllWindows()
```
在这个示例中,我们首先读取了待匹配的图像和模板。然后使用matchTemplate函数进行匹配,并得到匹配结果的最小值及其坐标。最后在原图中用矩形框标出匹配位置,并显示结果。
需要注意的是,不同的匹配方法可能需要不同的参数,例如基于相关性的匹配方法需要将匹配结果中的最大值作为匹配结果。此外,模板匹配方法对图像缩放和旋转比较敏感,可能需要进行预处理或使用其他方法来提高匹配的精度。