2014-02-13 47 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