我正在尝试与opencv / python进行模板匹配。它在视频上工作正常,这意味着它在屏幕中找到对象并将匹配的对象与矩形绑定。但是,当对象不存在时,边界矩形只会漂移。
有没有办法说,“如果模板不一样,不要绘制矩形”?
我想也许如果我获取了模板匹配方法的返回值,然后创建了一个阈值,说“如果数组中的数字高于该级别,则绘制矩形”,但图像数组太大而无法执行此操作
我在这里关注教程:http://docs.opencv.org/trunk/doc/py_tutorials/py_tutorials.html
这里有一个类似的问题:OpenCV. Drawing rectangle when matching但我对答案感到困惑,因为我认为min_value只是绘制矩形的坐标。
#template matching
edges2 = edges.copy()
template = cv2.imread("hand.jpg",0)
w,h = template.shape[::-1]
edges = edges2.copy()
method = eval('cv2.TM_CCOEFF')
res = cv2.matchTemplate(edges,template,method)
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(frame,top_left, bottom_right, 255, 2)
答案 0 :(得分:0)
max_val
返回的 minMaxLoc()
可用于您正在寻找的阈值。如果检测非常好,这个值将是最高的(1,如果我记得的话)。