opencv的视觉模板匹配
时间: 2023-09-29 22:04:23 浏览: 86
视觉模板匹配是 OpenCV 中一个常用的图像处理技术,用于在图像中查找与给定模板最相似的区域。
在 OpenCV 中,可以使用 `cv2.matchTemplate()` 函数来执行视觉模板匹配。这个函数需要输入待匹配的源图像和模板图像,并且需要指定匹配方法。
常用的匹配方法有以下几种:
- `cv2.TM_SQDIFF`:平方差匹配,值越小表示匹配度越高。
- `cv2.TM_SQDIFF_NORMED`:归一化平方差匹配,值越接近 0 表示匹配度越高。
- `cv2.TM_CCORR`:相关性匹配,值越大表示匹配度越高。
- `cv2.TM_CCORR_NORMED`:归一化相关性匹配,值越接近 1 表示匹配度越高。
- `cv2.TM_CCOEFF`:相关系数匹配,值越大表示匹配度越高。
- `cv2.TM_CCOEFF_NORMED`:归一化相关系数匹配,值越接近 1 表示匹配度越高。
下面是一个示例代码,演示了如何使用模板匹配方法在图像中查找目标模板:
```python
import cv2
import numpy as np
# 加载源图像和模板图像
source_image = cv2.imread('source_image.jpg')
template = cv2.imread('template.jpg')
# 执行模板匹配
result = cv2.matchTemplate(source_image, template, cv2.TM_CCOEFF_NORMED)
# 获取匹配结果中的最大值和位置
min_val, max_val, min_loc, max_loc = cv2.minMaxLoc(result)
# 在源图像中绘制矩形框标记匹配位置
template_width, template_height = template.shape[:2]
top_left = max_loc
bottom_right = (top_left[0] + template_width, top_left[1] + template_height)
cv2.rectangle(source_image, top_left, bottom_right, (0, 0, 255), 2)
# 显示结果图像
cv2.imshow('Result', source_image)
cv2.waitKey(0)
cv2.destroyAllWindows()
```
上述代码中,`source_image.jpg` 是待匹配的源图像,`template.jpg` 是模板图像。通过计算匹配结果的最大值和位置,可以找到在源图像中匹配度最高的区域,并在该区域绘制矩形框进行标记。
阅读全文