python cv2 matchtemplate详解
时间: 2023-07-24 15:07:30 浏览: 228
opencv通过阈值使用matchTemplate实现多目标匹配
在图像处理和计算机视觉中,模板匹配是一种常见的技术,它可以用于在一张图像中查找另一张小图像的位置。在OpenCV中,cv2.matchTemplate()函数可以用于实现模板匹配。下面是该函数的详细解释。
```python
cv2.matchTemplate(image, templ, method[, result[, mask]])
```
参数说明:
- image:输入图像,即待搜索的图像(大图像)。
- templ:模板图像,即要在输入图像中查找的小图像。
- method:匹配方法,可选值包括:cv2.TM_SQDIFF、cv2.TM_SQDIFF_NORMED、cv2.TM_CCORR、cv2.TM_CCORR_NORMED、cv2.TM_CCOEFF、cv2.TM_CCOEFF_NORMED。具体含义可以参考OpenCV官方文档。
- result:输出的匹配结果图像,数据类型为浮点型。
- mask:可选的蒙板图像,用于指定搜索区域。
返回值:
- res:匹配结果矩阵,即每个像素的匹配得分。
使用cv2.matchTemplate()函数的基本流程如下:
1. 加载原始图像和模板图像。
2. 使用cv2.matchTemplate()函数进行模板匹配,得到匹配结果矩阵。
3. 根据匹配结果矩阵找到最佳匹配位置。
下面给出一个简单的例子:
```python
import cv2
import numpy as np
# 加载原始图像和模板图像
img = cv2.imread('original.jpg')
template = cv2.imread('template.jpg')
# 获取模板图像的宽度和高度
w, h = template.shape[:2]
# 使用cv2.matchTemplate()函数进行模板匹配
res = cv2.matchTemplate(img, template, cv2.TM_CCOEFF_NORMED)
# 根据匹配结果矩阵找到最佳匹配位置
min_val, max_val, min_loc, max_loc = cv2.minMaxLoc(res)
top_left = max_loc
bottom_right = (top_left[0] + w, top_left[1] + h)
# 在原始图像中标注匹配位置
cv2.rectangle(img, top_left, bottom_right, (0, 0, 255), 2)
# 显示结果
cv2.imshow('Result', img)
cv2.waitKey(0)
cv2.destroyAllWindows()
```
在上面的例子中,我们首先加载了原始图像和模板图像,然后使用cv2.matchTemplate()函数进行模板匹配,得到匹配结果矩阵。接着,我们根据匹配结果矩阵找到最佳匹配位置,并在原始图像中标注出来。最后,将结果显示出来。
阅读全文