便签的对象检测

deez22

我正在尝试使用对象检测来识别视频提要中的便利贴。我正在使用emguCV进行检测。我尝试使用“形状检测”方法,但无法识别它的位置……也许是因为我将它举在空中,所以我的手指阻塞了顶点。

我也尝试过使用SURF检测,但是我猜这没用,因为它是正方形的,因此没有任何突出的功能。

我尝试使用HAAR / LBP分类,但是只花了10多个小时就只训练了48个阳性和80个阴性的一个阶段,所以我放弃了。

无论如何,是否可以建议一种用于检测/识别视频供稿中的便签纸的合适方法?将不胜感激。

米罗斯瓦尔

我最近有一个类似的问题,这就是我解决的方法。我只是使用HSV频谱中的便签颜色来定位它。您只需要选择一种易于识别且在角度下变化不大的颜色即可。

我使用此代码来控制带有2条便利贴的AR无人机,因此它必须可靠且快速。它在起作用希望能帮助到你。

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

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章