2012-09-27 42 views
19

Estoy intentando ejecutar OpenCV Tutorial 1 - Añadir OpenCV con la inicialización estática por medio de this
No quiero instalar una aplicación Administrador de OpenCV aparte), pero ocurre el "OpenCV error: Cannot load info library for OpenCV."estático de inicialización en OpenCV Android

lo hice las siguientes cosas:

  1. añaden una carpeta libs con armeabi, armeabi-v7a y x86 carpetas dentro de ella (de OpenCV-2.4.2-android-sdk/SDK/libs/nativos /)

  2. agregó el código estático {if (!OpenCVLoader.initDebug())} justo debajo de private Sample1View mView;

  3. eliminado el código de abajo

if (! OpenCVLoader.initAsync (OpenCVLoader.OPENCV_VERSION_2_4_2, esto, mOpenCVCallBack))

lo que parece ser el problema?

+0

También estoy recibiendo el mismo problema. ¿Has arreglado esto? – Manoj

+0

@Manoj lamentablemente, nadie ha ofrecido una solución para esto todavía. – Droidkie

+15

Todavía estoy confundido de por qué los mantenedores de OpenCV piensan que esto debería ser una configuración de 'depuración'. Si un usuario descarga una aplicación, parece poco intuitivo hacer que descargue una aplicación dentro de la aplicación. Debe ser responsabilidad del proveedor de la aplicación qué versiones de biblioteca de terceros usan y contrastan, ya que no hay garantía de que una versión actualizada de OpenCV funcione sin problemas con mi aplicación. –

Respuesta

10

debe agregar el código:

mOpenCVCallBack.onManagerConnected(LoaderCallbackInterface.SUCCESS); 

después:

if(!OpenCVLoader.initAsync(OpenCVLoader.OPENCV_VERSION_2_4_2, this, mOpenCVCallBack)) 

Si quita:

if(!OpenCVLoader.initAsync(OpenCVLoader.OPENCV_VERSION_2_4_2, this, mOpenCVCallBack)) 

bloque de código a continuación, nadie llama.

Espero que te pueda ayudar.

+1

Por favor, edite su respuesta y formatee el código para que sea legible. – kleopatra

+0

¡He cambiado! –

+1

¿Dónde deberíamos agregar este código? ¿Cuál es el nombre de la clase? – daigoor

1

El mensaje de registro:

"OpenCV error: Cannot load info library for OpenCV." 

no shuld preocupación. Al menos en mi aplicación me dice que algo como OpenCV libs init está bien después.

En el código de ejemplo, el objeto CameraBridgeViewBase se habilita cuando se llama a BaseLoaderCallback. Eso sucede cuando finaliza la carga asíncrona de la biblioteca de opencv. Cuando carga la biblioteca estáticamente, intente agregar una llamada a mOpenCVCameraView.enableView() en su método onResume() (después de cargar la lib de coourse).

0

initAsync() necesita una devolución de llamada para cargar opencv libs y sus jni libs.

compruebe la función de devolución de llamada y hágala correcta en el if (! OpenCVLoader.initDebug()), no en la devolución de llamada!

  if (!OpenCVLoader.initDebug()) { 
      // Handle initialization error 
       Log.i(TAG, "OpenCV load not successfully"); 
     } else { 
      System.loadLibrary("mixed_sample"); 
      //System.loadLibrary("my_jni_lib2"); 

      InitFeature(width,height); 

      mOpenCvCameraView.enableView(); 
     } 

funciona para el tutorial 2 en OCV4Android2.4.5.

4

tengo el mismo problema, he resuelto el problema agregando el código siguiente en el primero de mi clase Actividad:

static { 
    if (!OpenCVLoader.initDebug()) { 
     // Handle initialization error 
    } 
} 

También he añadido

mLoaderCallback.onManagerConnected(LoaderCallbackInterface.SUCCESS); 

antes de la línea

OpenCVLoader.initAsync(OpenCVLoader.OPENCV_VERSION_2_4_3, this, mLoaderCallback); 

y comenté la línea

OpenCVLoader.initAsync(OpenCVLoader.OPENCV_VERSION_2_4_3, this, mLoaderCallback); 

Buena suerte.

+0

Está mezclando inicialización estática y asincrónica. –

Cuestiones relacionadas