python 图像模板匹配 匹配多个结果
时间: 2023-09-06 17:08:05 浏览: 93
要匹配多个结果,可以使用OpenCV中的cv2.matchTemplate()函数和cv2.minMaxLoc()函数。以下是一个示例代码,它使用模板匹配在图像中查找所有匹配项,并在每个匹配项周围画出矩形框。
```python
import cv2
import numpy as np
# 读取图像和模板
img = cv2.imread('image.jpg')
template = cv2.imread('template.jpg')
# 获取模板和图像的尺寸
th, tw = template.shape[:2]
ih, iw = img.shape[:2]
# 进行模板匹配
result = cv2.matchTemplate(img, template, cv2.TM_CCOEFF_NORMED)
# 设置阈值
threshold = 0.8
# 获取匹配结果的位置
locations = np.where(result >= threshold)
locations = list(zip(*locations[::-1]))
# 画出矩形框
for loc in locations:
top_left = loc
bottom_right = (top_left[0] + tw, top_left[1] + th)
cv2.rectangle(img, top_left, bottom_right, (0, 0, 255), 2)
# 显示结果
cv2.imshow('Matched Image', img)
cv2.waitKey(0)
cv2.destroyAllWindows()
```
在这个例子中,我们通过设置阈值为0.8来获取所有匹配项的位置。然后使用cv2.rectangle()函数来画出矩形框,以便将匹配项标记出来。
阅读全文