我使用模板匹配来搜索具有多个示例的对象。
我指的是www.example.com上的教程https://opencv-python-tutroals.readthedocs.io/en/latest/py_tutorials/py_imgproc/py_template_matching/py_template_matching.html#template-matching-with-multiple-objects
这是我目前使用的代码
import cv2
import numpy as np
from matplotlib import pyplot as plt
img_rgb = cv2.imread('mario.png')
img_gray = cv2.cvtColor(img_rgb, cv2.COLOR_BGR2GRAY)
template = cv2.imread('mario_coin.png',0)
w, h = template.shape[::-1]
res = cv2.matchTemplate(img_gray,template,cv2.TM_CCOEFF_NORMED)
threshold = 0.8
loc = np.where( res >= threshold)
for pt in zip(*loc[::-1]):
cv2.rectangle(img_rgb, pt, (pt[0] + w, pt[1] + h), (0,0,255), 2)
cv2.imwrite('res.png',img_rgb)
这里,他们使用np.where(res>=threshold)
来过滤置信度大于给定阈值的元素。
我应该如何修改代码以获得在loc
中找到的每个匹配的置信度值?
for match in matches:
x,y,w,h,confidence=match
print(x,y,w,h,confidence)
在针对单个示例的模板匹配中,我们可以使用cv2.minMaxLoc(res)
来获得置信度,但是如何针对多个示例中的每个匹配来实现这一点呢?
输入图像示例:
范例模板:
1条答案
按热度按时间sh7euo9m1#
“
res
“变量包含图像中所有点的置信度,但靠近右边界和下边界的点除外。点的置信度表示左上角位于该点且宽度和高度与模板图像的宽度和高度相同的矩形的置信度。因此,要获得找到的每个匹配的置信度,请在for循环中添加一行:
“
confidence
“变量将包含该匹配的置信度。