使用OpenCV在纸张上检测衣服扣子

5

我对计算机视觉没有背景,但我很好奇如何使用OpenCV库来实现以下目标:

我有一个备用纽扣罐头,颜色、样式和直径各不相同。大部分是圆形的。我将它们均匀地散布在一张白纸上,在良好的光线下,用普通数码相机拍摄一张相当高分辨率的照片。我该如何切割这个图像以单独获取每个纽扣作为一个独立的对象/图像?

提前致谢。

3个回答

4

两种可能的方法:

1)使用圆形霍夫变换 您运行一些边缘检测器(Canny/Sobel),然后进行圆形霍夫变换。您将获得圆形。

2)使用轮廓 使用阈值分离按钮和背景。在此二值化图像中检测轮廓,您就拥有了按钮!

可能会有帮助的文章:

免责声明:这些是链接到我的网站。


2
我认为你可以尝试最简单的方法:运行Canny边缘检测器,并应用霍夫变换来检测圆形,并从每个圆形生成一个单独的图像。

1

我一直在做一些盘子识别,效果还不错。可以这样做:

进行一些阈值处理(按钮应该比背景更亮)以仅保留按钮,

然后使用cvFindContours

对于每个轮廓:

  • 运行cvFitEllipse,它将返回拟合椭圆的两个轴(a,b)。
  • 检查椭圆PIab的面积是否与使用cvContourArea计算的轮廓面积相似,并且两个轴是否相似a = b。(这将只留下圆形)
  • 然后您可以根据需要执行任何操作。 使用cvPrintContour打印轮廓,使用cvMinAreaRect2获取按钮边界框等

Hough变换也是可能的,但它要昂贵得多。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接