OpenCV多模板匹配代码
时间: 2023-09-17 08:07:50 浏览: 82
OpenCV实现图像模板匹配(C++实现).zip
以下是使用OpenCV进行多模板匹配的示例代码:
```python
import cv2
import numpy as np
# 读取原始图像和模板图像
img = cv2.imread('original_image.jpg')
template1 = cv2.imread('template1.jpg')
template2 = cv2.imread('template2.jpg')
# 将模板图像转换为灰度图像
template1_gray = cv2.cvtColor(template1, cv2.COLOR_BGR2GRAY)
template2_gray = cv2.cvtColor(template2, cv2.COLOR_BGR2GRAY)
# 获取模板图像的宽度和高度
w, h = template1_gray.shape[::-1]
# 使用模板匹配算法在原始图像中查找模板1,并返回匹配结果的坐标
res1 = cv2.matchTemplate(img, template1_gray, cv2.TM_CCOEFF_NORMED)
loc1 = np.where(res1 >= 0.8)
for pt in zip(*loc1[::-1]):
cv2.rectangle(img, pt, (pt[0] + w, pt[1] + h), (0,0,255), 2)
# 使用模板匹配算法在原始图像中查找模板2,并返回匹配结果的坐标
res2 = cv2.matchTemplate(img, template2_gray, cv2.TM_CCOEFF_NORMED)
loc2 = np.where(res2 >= 0.8)
for pt in zip(*loc2[::-1]):
cv2.rectangle(img, pt, (pt[0] + w, pt[1] + h), (0,255,0), 2)
# 显示匹配结果
cv2.imshow('result', img)
cv2.waitKey(0)
cv2.destroyAllWindows()
```
在代码中,我们首先读取原始图像和两个模板图像,并将它们转换为灰度图像。然后,我们使用 `cv2.matchTemplate()` 函数进行模板匹配,将匹配结果的阈值设置为 0.8。最后,我们使用 `cv2.rectangle()` 函数在原始图像上绘制矩形框来表示匹配结果的位置。
阅读全文