Detección de círculos de Hough android

Estoy tratando de detectar círculos con Android. Logré implementar el algoritmo de detección de líneas pero nada se muestra al intentar el algoritmo de círculos de hough de dibujo.

Aquí está mi código:

Mat thresholdImage = new Mat(getFrameHeight() + getFrameHeight() / 2, getFrameWidth(), CvType.CV_8UC1); mYuv.put(0, 0, data); Imgproc.cvtColor(mYuv, destination, Imgproc.COLOR_YUV420sp2RGB, 4); Imgproc.cvtColor(destination, thresholdImage, Imgproc.COLOR_RGB2GRAY, 4); Imgproc.GaussianBlur(thresholdImage, thresholdImage, new Size(9, 9), 2, 2 ); Mat circles = new Mat(); Imgproc.HoughCircles(thresholdImage, circles, Imgproc.CV_HOUGH_GRADIENT, 1d, (double)thresholdImage.height()/70, 200d, 100d); Log.w("circles", circles.cols()+""); for (int x = 0; x < circles.cols(); x++) { double vCircle[]=circles.get(0,x); Point center=new Point(Math.round(vCircle[0]), Math.round(vCircle[1])); int radius = (int)Math.round(vCircle[2]); // draw the circle center Core.circle(destination, center, 3,new Scalar(0,255,0), -1, 8, 0 ); // draw the circle outline Core.circle( destination, center, radius, new Scalar(0,0,255), 3, 8, 0 ); } 

Usted puede tener esto ordenado por ahora, pero algunas cosas. Comprobaría que su alfombra de círculos realmente tiene algunos resultados; A veces vCircle parece volver nulo; Prueba una de las otras versiones de HoughCircles:

 iCannyUpperThreshold = 100; iMinRadius = 20; iMaxRadius = 400; iAccumulator = 300; Imgproc.HoughCircles(thresholdImage, circles, Imgproc.CV_HOUGH_GRADIENT, 2.0, thresholdImage.rows() / 8, iCannyUpperThreshold, iAccumulator, iMinRadius, iMaxRadius); if (circles.cols() > 0) for (int x = 0; x < circles.cols(); x++) { double vCircle[] = circles.get(0,x); if (vCircle == null) break; Point pt = new Point(Math.round(vCircle[0]), Math.round(vCircle[1])); int radius = (int)Math.round(vCircle[2]); // draw the found circle Core.circle(destination, pt, radius, new Scalar(0,255,0), iLineThickness); Core.circle(destination, pt, 3, new Scalar(0,0,255), iLineThickness); } 

(Cambié su código en el mío, cambió el nombre de algunas cosas y se cambió de nuevo, creo que lo tengo de nuevo para que funcione …)

SEGUNDO.

  • Subir varios archivos de Android a AppEngine en 1 solicitud
  • Conversión de NV21 a RGB mediante OpenCV en Android
  • SurfaceView for Camera Preview no se destruye cuando se pulsa el botón de encendido
  • ¿Cuándo se llama a View.onMeasure ()?
  • ¿Cómo determinar en qué plataforma se ejecuta la aplicación actual en LibGDX?
  • ¿Es Hibernate un exceso para una aplicación de Android?
  • CursorIndexOutOfBoundsException en android
  • Custom android.app.Application no disparar evento onCreate
  • Android - Iniciar el servicio en el arranque
  • Cómo generar un código de hash exclusivo para la entrada de cadena en android ...?
  • Android pantalla completa una actividad y ocultar la barra de teclas
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.