2014-02-13 46 views
0

我試圖使用對象檢測來識別視頻供稿中的便箋。我正在使用emguCV進行檢測。我嘗試使用形狀檢測方法,但它無法識別後貼片......也許是因爲我把它放在空中,所以我的手指阻擋了頂點。便箋的對象檢測

我也嘗試過使用SURF檢測,但那也沒有工作,要麼我猜,因爲它是一個正方形,所以沒有任何突出的功能。

我試圖使用HAAR/LBP分類,但它只需要一個階段訓練超過10個小時,48個積極因素和80個消極因素,所以我放棄了。

無論如何可以建議一種合適的方法來檢測/識別視頻內的便籤紙嗎?將不勝感激。

回答

2

我最近有類似的問題,這是我已經解決了它。我剛剛使用HSV譜中的後記色彩來定位它。你只需要選擇一種既容易識別又不會在角度下變化很多的顏色。

我已經使用這段代碼來控制一個帶有2個便籤紙的AR無人機,所以它必須是可靠和快速的。 Here it is in action。希望能幫助到你。

def centerFromImage(image, hue_min, hue_max): 
    image = cv2.cvtColor(image, cv2.cv.CV_RGB2HSV) 
    hue = image[:, :, 0] 

    # Filter out green postit note color 
    # yellow is 90-100 
    # pink is 137-150 
    # green is 80-90 
    hue[hue < hue_min] = 0 
    hue[hue > hue_max] = 0 
    hue[hue > 0] = 255 

    hue = cv2.erode(hue, None, iterations=2) 
    hue = cv2.dilate(hue, None, iterations=2) 

    contours, hierarchy = cv2.findContours(
     hue, 
     cv2.RETR_LIST, 
     cv2.CHAIN_APPROX_SIMPLE 
    ) 

    center = [0, 0] 

    if len(contours) > 0: 
     contour = contours[0] 
     area = cv2.contourArea(contour) 

     for c in contours: 
      if cv2.contourArea(c) > area: 
       area = cv2.contourArea(c) 
       contour = c 

     m = cv2.moments(contour) 
     center = [0, 0] 
     if m['m00'] != 0: 
      center = [m['m10']/m['m00'], m['m01']/m['m00']] 

     center = [int(center[0]), int(center[1])] 

    return center 
+0

啊非常感謝你。你用什麼hsv最小值和最大值來定位藍色便利貼? – deez22

+0

不知道確切的是,我有一個腳本,允許我直接從攝像頭使用鼠標指針讀取色調值,如果你想要的話,我可以找到它 – mirosval

+0

是的,那會很有幫助。 – deez22