用OpenCV进行椭圆检测

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

据我所知,使用“HoughCircles”只能find完美的(或者是这样的)圆,从而留下椭圆。

任何帮助将不胜感激,因为我是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; 

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

Solutions Collecting From Web of "用OpenCV进行椭圆检测"

一个可能的解决scheme是类似于这个线程在图像上检测硬币(和适合椭圆) 。

你应该看看opencv的函数fitEllipse 。

HoughCircles使用的参数起着基本的作用。 HoughCircles将检测不仅完美,而且近乎完美的圆(椭圆)。 我build议你检查这个例子:

  • 如何检测照片中的圈子(硬币)
  • 使用OpenCV进行简单的对象检测
  • OpenCV点目标检测
  • 嘈杂的硬币变成一个圆形

而这个答案有一个体面的参考集合。

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

  • 在图像中查找Canny边缘
  • 使用滑动窗口,其大小是您正在寻找的椭圆长轴的最大长度。
  • 在窗口内,收集所有边缘像素,随机挑选6个像素,并使用线性最小二乘法来拟合一般forms的椭圆。
  • 在类似RANSAC的过程中重复上述步骤。
  • 如果有足够的内部,你有一个椭圆。