2015-11-26 18 views
6

Utilizzando Android ADT sto tentando di inizializzare statico openCV in modo che sia incluso nella build dell'app e gli utenti non debbano scaricare openCV Manager dal playstore Android.android Statico Inizializzazione opencv 3.0 Impossibile caricare la libreria "opencv_java3"

sto usando OpenCV v3 (http://opencv.org/downloads.html)

Allo stadio solo cercando di aggiungere inizializzazione statico a uno dei campioni in OpenCV-android-sdk \ samples \ faccia di rilevamento.

Ho seguito l'esempio (http://docs.opencv.org/2.4/doc/tutorials/introduction/android_binary_package/dev_with_OCV_on_Android.html)

Guardato un sacco di esempi, ma ancora venire con nessuna soluzione per farlo funzionare. Spero davvero che qualcuno possa essere in grado di aiutare.

Ho pensato che potrebbe essere dovuto a libopencv_java3.so non essere nella cartella libs/armeabi-v7a/ Quando lo copio e lo incollo da OpenCV-android-sdk\sdk\native\libs\armeabi-v7a scompare. Credo che questo potrebbe essere qualcosa a che fare con il modo in cui il ndk è impostato. Ovviamente il problema potrebbe essere qualcosa di completamente diverso.

LogCat dà questo:

11-26 16:36:33.647: D/OpenCV/StaticHelper(13993): Trying to load library opencv_java3 
11-26 16:36:33.647: D/OpenCV/StaticHelper(13993): Cannot load library "opencv_java3" 
11-26 16:36:33.647: W/System.err(13993): java.lang.UnsatisfiedLinkError: Couldn't load opencv_java3 from loader dalvik.system.PathClassLoader[DexPathList[[zip file "/data/app/org.opencv.samples.facedetect-1.apk"],nativeLibraryDirectories=[/data/app-lib/org.opencv.samples.facedetect-1, /vendor/lib, /system/lib, /vendor/lib]]]: findLibrary returned null 
11-26 16:36:33.767: D/OpenCV/StaticHelper(13993): Trying to load library opencv_java3 
11-26 16:36:33.767: D/OpenCV/StaticHelper(13993): Cannot load library "opencv_java3" 
11-26 16:36:33.767: W/System.err(13993): java.lang.UnsatisfiedLinkError: Couldn't load opencv_java3 from loader dalvik.system.PathClassLoader[DexPathList[[zip file "/data/app/org.opencv.samples.facedetect-1.apk"],nativeLibraryDirectories=[/data/app-lib/org.opencv.samples.facedetect-1, /vendor/lib, /system/lib, /vendor/lib]]]: findLibrary returned null 
+3

Gestito per risolvere il problema. Sto postando questo commento nella speranza che possa aiutare altre persone con lo stesso problema. In jni/Android.mk ha cambiato la riga da #OPENCV_INSTALL_MODULES: = on per sovrascrivere OPENCV_INSTALL_MODULES: = on Questo ha poi aggiunto libopencv_java3.so a libs/armeabi-v7a/libopencv_java3.so –

risposta

10

in caso qualcuno si imbatte in questo problema e utilizza Android Studio. Puoi risolvere il problema semplicemente copiando la cartella OpenCV-android-sdk \ sdk \ native \ libs

nel tuo OpenCvProject/openCVLibrary310/source/main e rinominalo in jniLibs. In modo che la struttura finale è simile al seguente: OpenCvProject/openCVLibrary310/source/main/jniLibs/ enter image description here

Se è già stato eseguito il progetto di Android Studio assicurarsi di eliminarlo prima dal dispositivo. In caso contrario, AndroidStudio potrebbe non ridistribuirlo e, a causa di ciò, potrebbe non copiarsi sulle librerie.

Potrebbe anche funzionare se si copiano le librerie nel progetto attuale e non nella cartella openCVLibrary ma non l'ho provato.

+0

questo sta dando come risultato un file apk di oltre 90 MB. _Possibilmente perché è stato compilato per tutte le piattaforme_? –

+0

sì, è necessario aggiungere [divide] (https://stackoverflow.com/a/42019169/3125070) in gradle –

0

Ho combattuto con questo problema per ore, quando ho provato qualcosa solo per divertimento e VOILÁ! Ho avuto il problema su System.loadLibrary("whateverYourLibraryWasCalled"); quindi aggiungo OpenCV caricato poco prima:

static { 
    System.loadLibrary("opencv_java3"); 
    System.loadLibrary("MyOpencvLibs"); 
} 

e tutto ha funzionato bene.

Problemi correlati