OpenCV找到轮廓

时间:2016-02-18 23:24:37

标签: python opencv

我们是使用OpenCV进行视觉检测的FIRST机器人团队的一员。其他团队发布了一个工作检测软件这可以在team2053tigertronics的Github(/2016Code/blob/master/Robot2016/src/vision/vision.cpp)上找到,我们正在尝试将他们的代码转换为Python,因为使用此代码作为示例代码我们可以稍后调整。转换时,我们遇到了一个奇怪的问题。 出于调试目的,我们使用print语句来打印轮廓,以便在我们尝试将代码放入boundingRectangle方法时知道为什么会出现错误 以下是我们的代码:http://pastebin.com/7zh4c7Ej
以下是我们的输出:http://pastebin.com/5fRQhC28

我们得到的错误:

回溯: 在第146行,processImage()
在第98行:rec = cv2.boundingRect(i [x])
索引256超出轴0的范围,大小为15 /
我们的输出是包含整数值的不同numpy数组的列表。我们对如何使用这些值绘制矩形并最终将这些值用于机器人游戏期间使用的坐标感到困惑。

我们感谢任何帮助!!!
谢谢!
Axton(和团队)

编辑: 正如其他成员所要求的,这是一个更简单的问题:

以下是我们的代码,我们遇到以下问题:     填充,轮廓,heirarchy = cv2.findContours(matThresh,cv2.RETR_EXTERNAL,cv2.CHAIN_APPROX_SIMPLE)

    for i in contours:

        for x in i:
            rec = Rect()
            print i[x]
            rec = cv2.boundingRect(i[x])

我们想知道如何使用轮廓值作为点来使用boundingRect方法。 再次感谢!

1 个答案:

答案 0 :(得分:0)

确实和@Miki上面说的一样容易。

由于contours是轮廓列表,因此您只需要一个循环来访问单个轮廓,并获取其中的边界矩形:

for contour in contours:
    rec = cv2.boundingRect(contour)
    print rec
    ## now, just for the fun, let's look
    ## at a *single* contour, it consists of points:
    for point in contour:
        print point