12

我想使用 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;

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

4

3 回答 3

7

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

你应该看看 opencv 的函数fitEllipse

于 2012-06-11T16:32:45.093 回答
5

中使用的参数HoughCircles起着基本作用。HoughCircles不仅会检测到完美的,还会检测到接近完美的圆(椭圆)。我建议你检查这个例子:

这个答案有很多参考资料。

于 2012-06-11T18:11:03.300 回答
4

如果您已经知道要查找的椭圆的大小,请尝试以下步骤:

  • 在图像中找到 Canny 边缘
  • 使用滑动窗口,其大小是您要查找的椭圆长轴的最大长度。
  • 在窗口内,收集所有边缘像素,随机选取 6 个像素,并使用线性最小二乘法拟合一般形式的椭圆。
  • 在类似 RANSAC 的过程中重复上述步骤。
  • 如果有足够的内点,你就有一个椭圆。
于 2013-03-16T20:15:03.350 回答