使用python 进行模板匹配并测量每一个匹配到的图像之间的距离
时间: 2024-04-29 15:24:29 浏览: 153
以下是使用Python进行模板匹配并测量每个匹配图像之间距离的示例代码:
```python
import cv2
import numpy as np
# 读取原始图像和模板图像
img = cv2.imread('original_image.jpg')
template = cv2.imread('template_image.jpg')
# 获取模板图像的高度和宽度
h, w = template.shape[:2]
# 进行模板匹配
res = cv2.matchTemplate(img, template, cv2.TM_CCOEFF_NORMED)
# 设置匹配阈值
threshold = 0.8
# 获取匹配结果的位置信息
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)
# 计算每个匹配结果之间的距离
if len(loc[0]) > 1:
for i in range(len(loc[0])-1):
x1 = loc[1][i]
y1 = loc[0][i]
x2 = loc[1][i+1]
y2 = loc[0][i+1]
distance = np.sqrt((x2 - x1)**2 + (y2 - y1)**2)
print("Distance between match %d and match %d: %.2f" % (i, i+1, distance))
# 显示匹配结果
cv2.imshow('Matched image', img)
cv2.waitKey(0)
cv2.destroyAllWindows()
```
在上述代码中,我们首先读取原始图像和模板图像,并获取模板图像的高度和宽度。然后,我们使用OpenCV中的matchTemplate函数进行模板匹配,并设置匹配阈值。接下来,我们获取匹配结果的位置信息,并使用cv2.rectangle函数绘制匹配结果的矩形框。同时,我们计算每个匹配结果之间的距离,并输出到控制台。最后,我们使用cv2.imshow函数显示匹配结果。
阅读全文