Inrange

时间:2017-02-27 12:44:35

标签: c++ opencv grayscale

我尝试使用openCV检测具有特定颜色的形状。 我要做的第一件事就是检测图像中的圆圈。

我可以使用houghCircles通过此函数调用来检测圆圈:

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

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

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

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

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

这是inRange返回的图像示例: Grayscale image

我需要使用哪些参数来检测该图像中的圆圈?

提前致谢,

彼得

1 个答案:

答案 0 :(得分:0)

通过对图像进行一些操作,我发现了一组有效的参数。

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

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

此外,您可能没有使用最佳工具。通过使用轮廓,您应该能够检测和分类一大堆不同的形状,而不仅仅是圆形。 This tutorial非常接近你想要做的事情,可能值得一读。