OpenCV para Android: Error al cargar el error del clasificador en cascada

Esta es la primera vez que uso openCV biblioteca. Quiero usarlo para detectar los ojos. He utilizado el código FdActivity disponible en este tutorial:

Http://romanhosek.cz/android-eye-detection-updated-for-opencv-2-4-6/

El tutorial utiliza OpenCV 2.4.6, pero he descargado la versión 3.1 en mi proyecto. Debido a las diferencias de versión he cambiado las líneas que utilizan putText, rectángulo y círculo para importar desde imgproc en lugar de Core. Esto es todo lo que he cambiado. He añadido haarcascade_lefteye_2splits.xml y lbpcascade_frontalface.xml a la carpeta raw en la carpeta res.

Al ejecutar la aplicación, obtengo este error en el logcat:

 failed to load cascade classifier 

Que sólo se genera a partir de estas líneas en si mJavaDetector o mJavaDetectorEye está vacío:

  try { // load cascade file from application resources InputStream is = getResources().openRawResource( R.raw.lbpcascade_frontalface); File cascadeDir = getDir("cascade", Context.MODE_PRIVATE); mCascadeFile = new File(cascadeDir, "lbpcascade_frontalface.xml"); FileOutputStream os = new FileOutputStream(mCascadeFile); byte[] buffer = new byte[4096]; int bytesRead; while ((bytesRead = is.read(buffer)) != -1) { os.write(buffer, 0, bytesRead); } is.close(); os.close(); // --------------------------------- load left eye // classificator ----------------------------------- InputStream iser = getResources().openRawResource( R.raw.haarcascade_lefteye_2splits); File cascadeDirER = getDir("cascadeER", Context.MODE_PRIVATE); File cascadeFileER = new File(cascadeDirER, "haarcascade_eye_right.xml"); FileOutputStream oser = new FileOutputStream(cascadeFileER); byte[] bufferER = new byte[4096]; int bytesReadER; while ((bytesReadER = iser.read(bufferER)) != -1) { oser.write(bufferER, 0, bytesReadER); } iser.close(); oser.close(); mJavaDetector = new CascadeClassifier( mCascadeFile.getAbsolutePath()); if (mJavaDetector.empty()) { Log.e(TAG, "Failed to load cascade classifier"); mJavaDetector = null; } else Log.i(TAG, "Loaded cascade classifier from " + mCascadeFile.getAbsolutePath()); mJavaDetectorEye = new CascadeClassifier( cascadeFileER.getAbsolutePath()); if (mJavaDetectorEye.empty()) { Log.e(TAG, "Failed to load cascade classifier"); mJavaDetectorEye = null; } else Log.i(TAG, "Loaded cascade classifier from " + mCascadeFile.getAbsolutePath()); cascadeDir.delete(); } 

Supongo que el camino a "haarcascade_eye_right.xml" no es correcto, o el archivo xml no existe, es esto lo que está causando el error?

En caso afirmativo, ¿cómo puedo tener el archivo xml, y dónde exactamente lo almacenaré? Si no, ¿cuál es la causa del problema?

Nota: uso Android Studio.

Agradecería cualquier ayuda en este sentido, he estado intentando por un tiempo, pero no pude resolverlo.

Entiendo. Aunque no tengo idea de por qué. …

 mJavaDetector = new CascadeClassifier( mCascadeFile.getAbsolutePath() ); //must add this line mJavaDetector.load( mCascadeFile.getAbsolutePath() ); 

esto funciona para mi.

  • Android: Uso de StreetViewPanoramaView en XML
  • Cómo generar simple-xml java objeto anotado desde el esquema xsd
  • Parse Exception: En la línea 1, columna 0: no se encontró ningún elemento
  • ¿Cómo infulo una vista personalizada en XML?
  • onclicklistener en el elemento específico de la recyclerview en android
  • Archivo XML válido da un error "no se pudo analizar" en Android ADT
  • Dibuja un círculo en una vista (android)
  • Android Studio activity_main.xml editor de diseño no me deja arrastrar y soltar nada ...?
  • Error: (218) Apóstrofo no precedido por \
  • Android: obtiene los elementos de la matriz de cadenas y muestra uno por uno en la vista de texto
  • La imagen no aparece en HTC One M8
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.