模板匹配opencv打Python代码
时间: 2023-04-10 16:03:15 浏览: 115
可以使用以下代码实现模板匹配:
```python
import cv2
# 读取原始图像和模板图像
img = cv2.imread('original_image.jpg')
template = cv2.imread('template_image.jpg')
# 获取模板图像的宽度和高度
w, h = template.shape[:-1]
# 使用 TM_CCOEFF_NORMED 方法进行模板匹配
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('Matched Image', img)
cv2.waitKey(0)
cv2.destroyAllWindows()
```
注意:以上代码仅供参考,具体实现可能需要根据实际情况进行调整。
相关问题
opencv模板匹配python代码
以下是使用OpenCV进行模板匹配的Python代码示例:
```python
import cv2
import numpy as np
# 读入原始图像和模板图像
img = cv2.imread('image.jpg')
template = cv2.imread('template.jpg')
# 获取模板图像的高度和宽度
h, w = template.shape[:2]
# 使用cv2.TM_CCOEFF_NORMED方法进行模板匹配
res = cv2.matchTemplate(img,template,cv2.TM_CCOEFF_NORMED)
# 设置匹配结果的阈值
threshold = 0.8
# 使用numpy.where函数获取匹配结果的坐标
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('Match Result', img)
cv2.waitKey(0)
cv2.destroyAllWindows()
```
其中,`cv2.imread`函数用于读入原始图像和模板图像,`cv2.matchTemplate`函数用于进行模板匹配,`np.where`函数用于获取匹配结果的坐标,`cv2.rectangle`函数用于绘制矩形框。
opencv-python 模板匹配
模板匹配是一种在图像中查找模板位置的技术。OpenCV中提供了多种模板匹配方法,其中最常用的是基于均方差和相关性的方法。
下面是一个使用基于均方差的模板匹配的示例代码:
``` python
import cv2
import numpy as np
# 读取图像和模板
img = cv2.imread('image.jpg')
template = cv2.imread('template.jpg')
# 获取模板的宽高
h, w = template.shape[:2]
# 使用matchTemplate函数进行匹配
res = cv2.matchTemplate(img, template, cv2.TM_SQDIFF_NORMED)
# 获取匹配结果的最小值和最大值及其坐标
min_val, max_val, min_loc, max_loc = cv2.minMaxLoc(res)
# 打印匹配结果
print('Matched location:', min_loc)
# 在原图中用矩形框标出匹配位置
top_left = min_loc
bottom_right = (top_left[0] + w, top_left[1] + h)
cv2.rectangle(img, top_left, bottom_right, (0, 255, 0), 2)
# 显示结果
cv2.imshow('result', img)
cv2.waitKey(0)
cv2.destroyAllWindows()
```
在这个示例中,我们首先读取了待匹配的图像和模板。然后使用matchTemplate函数进行匹配,并得到匹配结果的最小值及其坐标。最后在原图中用矩形框标出匹配位置,并显示结果。
需要注意的是,不同的匹配方法可能需要不同的参数,例如基于相关性的匹配方法需要将匹配结果中的最大值作为匹配结果。此外,模板匹配方法对图像缩放和旋转比较敏感,可能需要进行预处理或使用其他方法来提高匹配的精度。
阅读全文