opencv3.2的模板匹配函数
时间: 2023-08-16 20:04:15 浏览: 89
opencv3.2-sdk.zip
Opencv3.2中的模板匹配函数是`cv2.matchTemplate()`。该函数用于在图像中寻找与给定模板最匹配的区域。
函数的语法如下:
```
cv2.matchTemplate(image, template, method[, result[, mask]])
```
参数解释:
- `image`:待搜索的输入图像。
- `template`:要匹配的模板图像。
- `method`:匹配方法,指定了用于比较模板和输入图像的算法。常用的方法有:
- `cv2.TM_SQDIFF`:平方差匹配法。
- `cv2.TM_SQDIFF_NORMED`:归一化平方差匹配法。
- `cv2.TM_CCORR`:相关匹配法。
- `cv2.TM_CCORR_NORMED`:归一化相关匹配法。
- `cv2.TM_CCOEFF`:相关系数匹配法。
- `cv2.TM_CCOEFF_NORMED`:归一化相关系数匹配法。
- `result`:可选参数,输出的匹配结果图像。
- `mask`:可选参数,掩码图像。如果提供了掩码图像,则只有掩码对应位置的像素才参与匹配。
函数返回一个包含匹配结果的灰度图像。你可以使用`cv2.minMaxLoc()`函数找到最佳匹配位置的坐标。
示例代码:
```python
import cv2
import numpy as np
# 读取输入图像和模板图像
image = cv2.imread('image.jpg')
template = cv2.imread('template.jpg')
# 进行模板匹配
result = cv2.matchTemplate(image, template, cv2.TM_CCOEFF_NORMED)
# 找到最佳匹配位置的坐标
min_val, max_val, min_loc, max_loc = cv2.minMaxLoc(result)
top_left = max_loc
bottom_right = (top_left[0] + template.shape[1], top_left[1] + template.shape[0])
# 在原图像中标记匹配区域
cv2.rectangle(image, top_left, bottom_right, (0, 255, 0), 2)
# 显示结果图像
cv2.imshow('Matched Image', image)
cv2.waitKey(0)
cv2.destroyAllWindows()
```
这是一个简单的模板匹配示例,你可以根据自己的需求进行更复杂的操作和参数调整。
阅读全文