2017-02-27 81 views
0

我试图用openCV检测具有特定颜色的形状。 我想要做的第一件事是检测图像中的圆圈。Inrange后执行HoughCircles

我能够检测出界,使用houghCircles,通过调用该功能:

HoughCircles(gray, c, CV_HOUGH_GRADIENT, 1.5, gray.rows/10, 200, 100, 0, 0); 

现在,我试图与特定的颜色来检测圈。 我正在使用inRange函数执行此操作,该函数返回一个8位单通道图像。

此功能只能过滤图像中的给定颜色。即黄色。

但是,当我将返回的图像传递给houghCircles函数时,它不返回任何圆圈。 没有编译错误。

我已经试图改变一些houghCircles的参数,但我无法检测到圆。

这是形象,是INRANGE返回的例子: Grayscale image

哪些参数做我需要使用,以检测图像中的圆?

由于提前,

彼得

回答

0

做一些与你的形象玩弄,我已经找到了一组工作参数。

HoughCircles(shapes, circles, CV_HOUGH_GRADIENT, 1, shapes.rows/4, 400, 20, 0, 0); 

我怀疑这些都是理想参数,我强烈建议你去建立自己的应用程序改变功能参数 - 有很多简单的基于滑块的应用程序的例子OpenCV的文档,你可以用它来玩弄参数,直到遇到有效的东西。例如,This one是Hough Circles的演示。

此外,您可能没有使用最好的工具来完成这项工作。通过使用轮廓,您应该能够检测并分类大量不同的形状,而不仅仅是圆形。 This tutorial非常接近你想要做的,可能值得一读。