使用OpenCV进行椭圆检测

时间:2012-06-11 15:19:20

标签: java android opencv image-processing computer-vision

我想用OpenCV for Android检测省略号,使用OpenCV 2.4.1软件包附带的Tutorial 2-Basic作为起点。请注意,我的椭圆将是一个完美的Photoshop应用程序。

根据我的理解,使用“HoughCircles”只能找到完美(或如此)的圆圈,从而留下椭圆。

我非常感谢任何帮助,因为我是OpenCV的初学者

这是我到目前为止所尝试的

    case Sample2NativeCamera.VIEW_MODE_CANNY: (ignore the Canny mode...)

        capture.retrieve(mGray, Highgui.CV_CAP_ANDROID_GREY_FRAME);
        Imgproc.HoughCircles(mGray, mCircles, Imgproc.CV_HOUGH_GRADIENT, 1, 20);
        Log.d("Ellipse Points", " X " + mCircles.get(1,1)[0] + mCircles.get(1, 1)[1]);

        break;

如果您认为更多信息可能有用,请告诉我们。

3 个答案:

答案 0 :(得分:7)

您的问题的一种可能解决方案类似于此线程Detection of coins (and fit ellipses) on an image

你应该看一下opencv的函数fitEllipse

答案 1 :(得分:5)

HoughCircles中使用的参数起着重要作用。 HoughCircles不仅可以检测完美,还可以检测近乎完美的圆圈(椭圆)。我建议你查看这个例子:

this answer有很多参考文献。

答案 2 :(得分:4)

如果您已经了解了要查找的省略号的大小,请尝试以下步骤:

  • 在图像中查找Canny边缘
  • 使用滑动窗口,其大小是您要查找的椭圆长轴的最大长度。
  • 在窗口内,收集所有边缘像素,随机选择6个像素并使用linear least squaresgeneral form中拟合椭圆。
  • 在类似RANSAC的程序中重复上述步骤。
  • 如果有足够的内部,你有一个椭圆。