使用OpenCV进行椭圆检测

12

我想使用OpenCV for Android检测椭圆,以OpenCV 2.4.1包中包含的教程2-基础知识为起点。请注意,我的椭圆将是一个完美的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;

如果您认为还有其他有用的信息,请让我知道。


这段代码是否能够正确地检测出圆形? - rmtheis
3个回答

7

5

4
如果您已经有了想要寻找的椭圆大小的想法,则请尝试以下步骤:
  • 在图像中查找Canny边缘
  • 使用滑动窗口,其大小为您要查找的椭圆主轴的最大长度。
  • 在窗口内,收集所有边缘像素,随机选择6个像素,并使用线性最小二乘法来拟合一般形式的椭圆。
  • 在类似于RANSAC的过程中重复上述步骤。
  • 如果有足够的内点,则您有一个椭圆。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接