使用OpenCV检测一张纸上的衣服按钮

时间:2010-07-15 02:43:00

标签: image-processing opencv computer-vision

我没有计算机视觉的背景,但我很想知道如何使用OpenCV库来实现以下目标:

我有一罐备用按钮,颜色,款式和直径各异。在大多数情况下,它们是循环的。我将它们均匀地散布在一张白纸上,在良好的光线下,用普通的数码相机拍摄相当高分辨率的照片。我如何切割此图像以单独抓取每个按钮作为单独的对象/图像?

提前致谢。

3 个答案:

答案 0 :(得分:4)

两种可能的方式:

1)使用圆形霍夫变换 你运行一些边缘探测器(canny / sobel),然后进行圆形霍夫变换。你会得到圈子。

2)使用轮廓 使用阈值分隔按钮和背景。检测此阈值图像中的轮廓,您有按钮!

可能有用的文章:

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

答案 1 :(得分:2)

我认为您可以尝试的最简单的事情是:运行Canny边缘检测器并应用Hough变换来检测圆圈并从每个圆圈生成单独的图像。

答案 2 :(得分:1)

我一直在做一些菜识别,它工作得很好。这样做:

做一些阈值处理(按钮应该比背景更亮),只留下按钮,

然后是cvFindContours

每个轮廓

  • 运行cvFitEllipse,它将返回拟合椭圆的两个轴(a,b)。
  • 使用cvContourArea检查椭圆PI a b的面积是否与轮廓的面积相似,并且两个轴的相似度a = b。 (这将只留下圆圈)
  • 然后你可以做任何你需要的事情。 printContour,使用cvPrintContour,使用cvMinAreaRect2获取按钮边界框等。

霍夫变换也是可能的,但它更昂贵。