2012-06-11 25 views
10

Me gustaría detectar elipsis con OpenCV para Android, utilizando el Tutorial 2-Basic incluido con el paquete OpenCV 2.4.1 como punto de partida. Tenga en cuenta que mi elipse sería perfecta para Photoshop.Detección de elipse con OpenCV

Por lo que entiendo, al usar los "HoughCircles" solo encontrarán círculos perfectos (o tan), dejando así las elipsis.

Cualquier ayuda sería muy apreciada ya que soy un principiante en OpenCV

Esto es lo que he probado hasta ahora

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; 

Si cree que algo más información podría ser útil, por favor, vamos yo sé.

+0

¿Este código detectó correctamente los círculos? – rmtheis

+0

Con algunos ajustes, lo hizo – zeroxgames

Respuesta

3

Si ya tiene una idea de los tamaños de las elipses que está buscando, a continuación, tratar los siguientes pasos:

  • Hallar bordes Canny en la imagen
  • Usar una ventana deslizante, el cuyo tamaño es la longitud máxima del eje principal de elipses que estás buscando.
  • Dentro de la ventana, recoja todos los píxeles de borde, elija 6 píxeles al azar y use linear least squares para caber una elipse en general form.
  • Repita el paso anterior en un procedimiento parecido a RANSAC.
  • Si hay suficientes inliers, tiene una elipse.
Cuestiones relacionadas