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