cv2matchTemplate如何才能更准确 写个例子 比如加上边缘检测
要使cv2.matchTemplate更准确,可以将边缘检测与模板匹配结合使用。以下是一个简单的例子:
import cv2
import numpy as np
# 读取原始图像和模板图像
img = cv2.imread('image.jpg', 0)
template = cv2.imread('template.jpg', 0)
# 对原始图像进行边缘检测
edges = cv2.Canny(img, 100, 200)
# 使用匹配模板进行模板匹配
result = cv2.matchTemplate(edges, template, cv2.TM_CCOEFF_NORMED)
# 设置匹配阈值
threshold = 0.8
loc = np.where(result >= threshold)
# 在原始图像中绘制矩形框标记匹配位置
for pt in zip(*loc[::-1]):
cv2.rectangle(img, pt, (pt[0] + template.shape[1], pt[1] + template.shape[0]), (0, 255, 0), 2)
# 显示结果
cv2.imshow('Result', img)
cv2.waitKey(0)
cv2.destroyAllWindows()
在这个例子中,首先读取原始图像和模板图像。然后,使用cv2.Canny函数对原始图像进行边缘检测,得到边缘图像。接下来,使用cv2.matchTemplate函数将边缘图像与模板进行匹配,并得到匹配结果。最后,通过设置匹配阈值,找到匹配结果中大于阈值的位置,并在原始图像中绘制矩形框标记匹配位置。
原文地址: https://www.cveoy.top/t/topic/i651 著作权归作者所有。请勿转载和采集!