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.

FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.