cv2模板匹配如何只返回最佳坐标框
时间: 2023-09-10 12:05:08 浏览: 158
使用OpenCV中的模板匹配函数cv2.matchTemplate()可以实现模板匹配。如果您想要只返回最佳匹配位置,则可以使用cv2.minMaxLoc()函数来获取最佳匹配的位置。
首先,您需要使用模板图像和待匹配图像调用cv2.matchTemplate()函数。它将返回一个匹配图像,其中每个像素都表示该位置与模板的匹配程度。然后,您可以使用cv2.minMaxLoc()函数找到最佳匹配位置,并返回该位置的坐标。
下面是一个简单的示例代码段,可用于只返回最佳匹配位置:
```
import cv2
# Load template and image
template = cv2.imread('template.png')
image = cv2.imread('image.png')
# Perform template matching
result = cv2.matchTemplate(image, template, cv2.TM_CCOEFF_NORMED)
# Get best match location
min_val, max_val, min_loc, max_loc = cv2.minMaxLoc(result)
# Get top-left and bottom-right coordinates of best match
top_left = max_loc
bottom_right = (top_left[0] + template.shape[1], top_left[1] + template.shape[0])
# Draw rectangle around best match
cv2.rectangle(image, top_left, bottom_right, (0, 0, 255), 2)
# Display image with best match highlighted
cv2.imshow('Matched Image', image)
cv2.waitKey(0)
cv2.destroyAllWindows()
```
在这个示例中,我们首先加载模板图像和待匹配图像。然后,我们使用cv2.matchTemplate()函数执行模板匹配并将结果存储在result变量中。接下来,我们使用cv2.minMaxLoc()函数计算最佳匹配位置的坐标。最后,我们使用cv2.rectangle()函数在待匹配图像中绘制一个矩形框,以突出显示最佳匹配位置。
阅读全文