使用OpenCV(Python)查找具有最大封闭区域的轮廓

时间:2016-05-19 18:09:44

标签: python opencv computer-vision contour canny-operator

我有一张图片Original Image,我想在图片中找到包围盒子的轮廓。这样做的原因是,我想将图像裁剪到边界框,然后对此裁剪图像执行进一步的图像处理。

我试过检测Canny边缘,但它们似乎没有像我想要的那样连接。附件是精巧边缘外观的图像。 Canny edges

    gray = img[:,:,1]
    blurred = cv2.GaussianBlur(gray, (5, 5), 0)
    edged = cv2.Canny(blurred, 20, 60)

从原始图像中找到边界框的最佳方法是什么?

非常感谢。

如果可能的话,请告诉我如何让这个问题更清楚!

1 个答案:

答案 0 :(得分:0)

我假设如下:(如果不是这种情况,你应该在你的问题中指明这些事情) 你知道盒子的大小 大小总是一样的 视角总是一样的 该框总是完全在fiew的范围内 盒子没有旋转

在图像上使用几条扫描线来查找从黑色背景到框的转换(在x和y中) 超出阈值,最大梯度或任何最适合您的。

丢弃异常值,使用最小和最大坐标将固定大小的ROI定位在您的盒子上。

还有许多其他方法可以找到固定投资回报率的中心位置,如

阈值,距离变换,最大值

阈值,斑点搜索,质心/轮廓

你也可以做一些轮廓匹配。

我建议您改进设置,使背景照明不超过框边框(左/右比顶部/底部好)。然后一切都变得容易了。

你的边缘图像看起来很可怕。检查其他方法或改进您的Canny参数。