2014-09-29 55 views
0

我沒有得到要匹配的對象上的矩形。可以告訴我我的代碼有什麼問題,或者你能寫一個更好的代碼嗎?如何使用opencv和python使用相機實時匹配模板?

import cv2 
import numpy as np 


cap = cv2.VideoCapture(0) 
template = cv2.imread('tnmul.jpg',0) 
w, h = template.shape[::-1] 
while(True): 
    ret, frame = cap.read() 
    i= cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY) 
    res = cv2.matchTemplate(i,template,2) 
    cv2.imshow('frame',i) 
    min_val, max_val, min_loc, max_loc = cv2.minMaxLoc(res) 
    top_left = max_loc 
    bottom_right = (top_left[0] + w, top_left[0] + h) 
    cv2.rectangle(i, top_left, bottom_right, (50, 0, 130), 2) 
    cv2.imshow('output',i) 
    if cv2.waitKey(1) & 0xFF == ord('q'): 
     break 
cap.release() 
cv2.destroyAllWindows() 
+0

你得到的結果是什麼?錯誤在哪裏? – GPPK 2014-09-29 19:04:49

+0

程序中沒有錯誤!它運行但它不匹配。我的意思是它不會在要匹配的圖像上繪製矩形。結果是它只是在循環中保持運行而不匹配 – 2014-10-01 13:44:02

回答

0

既然你已經過去了2在函數matchTemplate暗示你正在使用的相似度計算標準化的平方差(CV_TM_SQDIFF_NORMED)的說法。因此你的結果將被存儲在min_loc中。所以,而不是這條線使用

top_left = min_loc 

原因最小值將包含最佳匹配。