首页 文章

OpenCV找到轮廓

提问于
浏览
-1

我们是FIRST机器人团队的一员,该团队使用OpenCV进行视觉检测 . 其他团队发布了一个工作检测软件这可以在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数组的列表 . 我们对如何使用这些值绘制矩形并最终将这些值用于机器人游戏期间使用的坐标感到困惑 .

我们感谢任何帮助!
谢谢!
阿克斯顿(和团队)

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

这是我们的代码,我们遇到问题:填充,轮廓,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

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

    由于 contours 是一个轮廓列表,你只需要 one 循环来访问一个轮廓,并得到它的边界矩形:

    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
    

相关问题