python模板匹配代码
时间: 2023-07-23 11:01:17 浏览: 92
以下是使用 OpenCV 库进行模板匹配的 Python 代码示例:
```python
import cv2
# 读取原始图像和模板图像
img = cv2.imread('original_image.png')
template = cv2.imread('template_image.png')
# 获取模板图像的尺寸
h, w = template.shape[:2]
# 使用 TM_CCOEFF_NORMED 方法进行模板匹配
res = cv2.matchTemplate(img, template, cv2.TM_CCOEFF_NORMED)
# 设置匹配阈值
threshold = 0.8
# 获取匹配结果中大于阈值的像素位置
loc = cv2.findNonZero(res > threshold)
# 在原始图像中绘制矩形框标记匹配位置
for pt in loc:
x, y = pt[0]
cv2.rectangle(img, (x, y), (x + w, y + h), (0, 0, 255), 2)
# 显示匹配结果
cv2.imshow('Matching Result', img)
cv2.waitKey(0)
cv2.destroyAllWindows()
```
其中,`cv2.matchTemplate()` 函数用于进行模板匹配,匹配结果保存在 `res` 中。通过设定阈值 `threshold` 来筛选出匹配结果中大于该阈值的像素位置,最后在原始图像中绘制矩形框标记匹配位置。
相关问题
python opencv 模板匹配 代码范例
好的,下面提供一下python opencv模板匹配的代码范例:
```python
import cv2
# 读取原图和模板图
img = cv2.imread('original_image.jpg')
template = cv2.imread('template_image.jpg')
# 获取模板图的尺寸
h, w = template.shape[:2]
# 选择匹配算法,这里选择 TM_CCOEFF_NORMED
# https://docs.opencv.org/2.4/modules/imgproc/doc/object_detection.html#cv2.matchTemplate
res = cv2.matchTemplate(img, template, cv2.TM_CCOEFF_NORMED)
# 设置匹配阈值,找到所有可能的匹配位置
threshold = 0.9
locs = cv2.findNonZero(res > threshold)
# 在原图上画出匹配位置的矩形框
for loc in locs:
x, y = loc[0]
cv2.rectangle(img, (x, y), (x + w, y + h), (0, 0, 255), 2)
# 显示匹配结果
cv2.imshow('result', img)
cv2.waitKey(0)
cv2.destroyAllWindows()
```
希望能够帮到你。
python 模板匹配
Python中的模板匹配是一种在图像处理中广泛使用的技术,它可以用来寻找图像中的某个模板或特定形状。下面是一个简单的模板匹配的例子:
```python
import cv2
import numpy as np
# 读取原始图像和模板
img = cv2.imread('image.png')
template = cv2.imread('template.png')
# 获取模板的尺寸
w, h = template.shape[:2]
# 进行模板匹配
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('Match Result', img)
cv2.waitKey(0)
```
在上述代码中,我们先读取了原始图像和模板,然后调用`cv2.matchTemplate()`函数进行模板匹配。该函数返回一个二维数组,其中每个元素表示图像中与模板匹配的程度。我们可以使用`cv2.minMaxLoc()`函数获取该数组中最大值的位置,从而找到匹配位置。最后,我们在原始图像中绘制一个矩形框标记匹配位置,并显示结果。
阅读全文