2012-09-27 4 views
19

Sto cercando di eseguire OpenCV Tutorial 1 - Aggiungi OpenCV con inizializzazione statico utilizzando this
Non voglio un'applicazione separata OpenCV manager installato), ma ottengo un "OpenCV error: Cannot load info library for OpenCV."statico inizializzazione su OpenCV Android

ho fatto le seguenti cose:

  1. aggiunto una cartella librerie con armeabi, armeabi-v7a, e x86 cartelle all'interno di essa (da OpenCV-2.4.2-android-sdk/SDK/native/libs /)

  2. aggiunto il codice statico {if (!OpenCVLoader.initDebug())} appena sotto privateView1View mView;

  3. rimosso il codice qui sotto

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

quello che sembra essere il problema?

+0

Anche io ho lo stesso problema. Hai sistemato questo? – Manoj

+0

@Manoj purtroppo, nessuno ha ancora offerto una soluzione per questo. – Droidkie

+15

Sono ancora confuso sul motivo per cui i manutentori di OpenCV pensano che questa dovrebbe essere una configurazione di 'debug'. Se un utente scarica un'app, non sembra intuitivo scaricarli in un'app all'interno dell'app. Dovrebbe essere la responsabilità del fornitore di app quali versioni di librerie di terze parti utilizzano e testare in quanto non c'è alcuna garanzia che una versione aggiornata di OpenCV funzionerà perfettamente con la mia app. –

risposta

10

è necessario aggiungere il codice:

mOpenCVCallBack.onManagerConnected(LoaderCallbackInterface.SUCCESS); 

dopo:

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

Se si rimuove:

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

blocco di codice allora nessuno chiama.

Spero che possa aiutarti.

+1

Modifica la tua risposta e formatta il codice per renderlo leggibile. – kleopatra

+0

Sono cambiato! –

+1

Dove dovremmo aggiungere questo codice? qual è il nome della classe? – daigoor

1

Il messaggio di registro:

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

non shuld preoccupare. Almeno nella mia app mi dice che qualcosa come OpenCV libs init è OK in seguito.

Nel codice di esempio, l'oggetto CameraBridgeViewBase viene abilitato quando viene richiamato BaseLoaderCallback. Ciò accade quando il caricamento asincrono della libreria opencv è terminato. Quando si carica la libreria staticamente, provare ad aggiungere una chiamata a mOpenCVCameraView.enableView() nel proprio metodo onResume() (dopo aver caricato la lib di coourse).

0

initAsync() richiede un callback per caricare librerie opencv e le librerie jni.

controllare la funzione di callback e inserirla nel if (! OpenCVLoader.initDebug()), non nel callback!

  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(); 
     } 

funziona per il tutorial 2 in OCV4Android2.4.5.

4

Ho lo stesso problema, ho risolto il problema aggiungendo il seguente codice alla prima della mia classe di attività:

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

Inoltre ho aggiunto

mLoaderCallback.onManagerConnected(LoaderCallbackInterface.SUCCESS); 

prima della linea

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

e ha commentato la riga

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

Buona fortuna.

+0

Stai mescolando l'inizializzazione statica e asincrona. –