opencv模板匹配多个目标
时间: 2023-08-01 09:12:19 浏览: 124
如果要在图像中匹配多个目标,可以使用 OpenCV 中的模板匹配函数 `cv2.matchTemplate()` 和 `cv2.minMaxLoc()`。
首先,将要匹配的模板图片和待匹配的原始图片都加载进来。然后,使用 `cv2.matchTemplate()` 函数计算模板和原始图片之间的匹配度。接着,使用 `cv2.minMaxLoc()` 函数找到匹配度最高的区域,并在原始图片上绘制矩形框。
以下是示例代码:
```
import cv2
import numpy as np
# 加载模板图片和原始图片
template = cv2.imread('template.jpg', 0)
img = cv2.imread('image.jpg', 0)
# 获取模板图片的宽高
w, h = template.shape[::-1]
# 使用模板匹配函数计算匹配度
res = cv2.matchTemplate(img, template, cv2.TM_CCOEFF_NORMED)
# 设置匹配度的阈值,只保留匹配度大于阈值的区域
threshold = 0.8
loc = np.where(res >= threshold)
# 在原始图片上绘制矩形框
for pt in zip(*loc[::-1]):
cv2.rectangle(img, pt, (pt[0]+w, pt[1]+h), (0, 0, 255), 2)
# 显示匹配结果
cv2.imshow('image', img)
cv2.waitKey(0)
cv2.destroyAllWindows()
```
在这个示例代码中,我们加载了模板图片 `template.jpg` 和原始图片 `image.jpg`。然后,使用 `cv2.matchTemplate()` 函数计算匹配度,将匹配度大于阈值 `0.8` 的区域保留下来。最后,使用 `cv2.rectangle()` 函数在原始图片上绘制矩形框。
请注意,如果要匹配多个模板,可以使用循环来重复以上操作。
阅读全文