我有一个图像Original image,我想在图像中找到包围盒子的轮廓。这样做的原因是,我想将图像裁剪到边界框中,然后对裁剪后的图像进行进一步的图像处理。
我试过检测Canny边,但它们似乎没有像我希望的那样连接。附件是Canny边的外观图像。罐头边缘
gray = img[:,:,1]
blurred = cv2.GaussianBlur(gray, (5, 5), 0)
edged = cv2.Canny(blurred, 20, 60)
从原始图像中找到边界框的最佳方法是什么?
非常感谢。
如果可能的话,让我知道如何让这个问题更清楚!
我假设如下:(如果不是这样,你应该在问题中指定这样的东西)你知道盒子的大小大小总是一样的视角总是一样的盒子总是完全在视野范围内箱子未旋转
在图像上使用几条扫描线来找到从黑色背景到长方体的过渡(在x和y中)超过阈值、最大坡度或任何最适合您的选项。
丢弃异常值,使用最小和最大坐标将固定大小的ROI定位在方框上。
还有很多其他方法可以找到固定ROI的中心位置,比如
阈值、距离变换、最大
或
阈值、斑点搜索、质心/轮廓
你也可以做一些轮廓匹配。
我建议您改进设置,使背景照明不超过框边界(左/右比上/下更好)。然后一切都变得容易了。
顺便说一句,你的边缘图像看起来很糟糕。检查其他方法或改进你的Canny参数。