1
我正在尝试使用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)
当我开始打印出max_val时,我得到了数百万的数字,但它绝对是一个门槛。 – JustBlossom
在C++接口中,'CV_32FC1'图像的范围是从0到1.我不知道Python的存储方式。不确定,但也许NumPy有更好的解决方案? –
您的意思是获取阈值的值?我为视频帧使用NumPy数组,因此我假设(也许是一件坏事)max_val来自NumPy计算。 – JustBlossom