2014-10-09 2 views
3

В настоящее время я разрабатываю проект в Android Studio, и мне нужно использовать некоторые библиотеки OpenCV.Android Studio OpenCV Образец

Я знаю, что Android Studio в настоящее время не поддерживает разработку NDK, но когда я проводил исследование, я обнаружил, что есть способы обойти ситуацию.

Я после этого учебника, чтобы добавить библиотеки OpenCV для моего проекта:

How to use opencv in android studio using gradle build tool?

Все работало нормально, но когда я попытался проверить пример OpenCV как «FaceDetection», делая это:

Перейдите в OpenCV Android SDK, выберите образец проекта, который вы хотите попробовать .

Сначала удалите папку «res» внутри вашего собственного проекта/src/main, , затем поместите папку res из образцов внутри папки вашего приложения/src/main .

Сначала удалите «ява» папку из приложения/SRC/основной, а затем скопировать «SRC» папку из образцов там (обратите внимание, что ЦСИ должен быть переименован в Java).

Если вы строите пример с родными C++-файлами, вам необходимо установить NDK . Загрузите его с портала разработчиков Google и добавьте эту строку в ваш local.properties на верхнем уровне вашего проекта, ниже . Строка sdk.dir: ndk.dir=/path/to/your/android-ndk Создайте и запустите пример !

Я получил эти ошибки:

java.lang.UnsatisfiedLinkError: Couldn't load detection_based_tracker from loader dalvik.system.PathClassLoader[DexPathList[[zip file "/data/app/com.example.ricardonascimento.opencvexamples-2.apk"],nativeLibraryDirectories=[/data/app-lib/com.example.ricardonascimento.opencvexamples-2, /vendor/lib, /system/lib]]]: findLibrary returned null 
      at java.lang.Runtime.loadLibrary(Runtime.java:358) 
      at java.lang.System.loadLibrary(System.java:526) 

проблема При загрузке библиотеки

// Load native library after(!) OpenCV initialization 

System.loadLibrary("detection_based_tracker"); 

Что вы предлагаете, чтобы решить эту проблему? Я искал по всей сети, но ничего не нашел.

+0

* "Что вы предлагаете, чтобы решить эту проблему" * - убедитесь, что библиотека 'detect_based_tracker' находится в папке' armeabi/'APK. APK - это просто файл ZIP с некоторыми дополнительными материалами, такими как манифест и подписи. – jww

+0

Значит, вы когда-нибудь это исправили? – Ahmed

ответ

0

У меня возникла аналогичная проблема при установке и настройке библиотек OPENCV в AndroidStudio. Если это не проблема, пожалуйста, проигнорируйте этот ответ (я знаю, что это было задано год назад). Надеемся, что другие могут найти это полезным для быстрого устранения неполадок. В github simple sample используются библиотеки OPENCV. Все уже настроено, чтобы заставить его работать очень быстро. Мой AndroidStudio 2.0 Preview 2 (выпущен 5 дней назад).

Cheers.

0

Можете ли вы показать build.gradle вашего приложения? Вы должны проверить настройки «sourceSets», по умолчанию источником для собственного модуля является «jniLibs». Таким образом, каталог jniLibs должен содержать необходимый модуль, например. armeabi-v7a, MIPS, x86 и т.д.

Вот пример сборки: (Примечание: я настроен 'jniLibs' в 'LIBS', просто личные предпочтения ...)

~/AndroidStudioProjects/OpenCV3-FaceDetection/app/jni$ ndk-build 
[armeabi-v7a] Compile++ thumb: detection_based_tracker <= DetectionBasedTracker_jni.cpp 
[armeabi-v7a] Prebuilt  : libopencv_java3.so <= /home/cobalt/Android/OpenCV-android-sdk/sdk/native/jni/../libs/armeabi-v7a/ 
[armeabi-v7a] SharedLibrary : libdetection_based_tracker.so 
/home/cobalt/Android/adt-bundle-linux-x86-20131030/android-ndk-r10d/toolchains/arm-linux-androideabi-4.8/prebuilt/linux-x86/bin/../lib/gcc/arm-linux-androideabi/4.8/../../../../arm-linux-androideabi/bin/ld: warning: hidden symbol '__aeabi_atexit' in /home/cobalt/Android/adt-bundle-linux-x86-20131030/android-ndk-r10d/sources/cxx-stl/gnu-libstdc++/4.8/libs/armeabi-v7a/thumb/libgnustl_static.a(atexit_arm.o) is referenced by DSO /home/cobalt/AndroidStudioProjects/OpenCV3-FaceDetection/app/obj/local/armeabi-v7a/libopencv_java3.so 
[armeabi-v7a] Install  : libdetection_based_tracker.so => libs/armeabi-v7a/libdetection_based_tracker.so 
[armeabi-v7a] Install  : libopencv_java3.so => libs/armeabi-v7a/libopencv_java3.so 

Вы также можете настройте «jniLibs» в «libs» из каталога приложений следующим образом:

Ex.

sourceSets { 
    main { 
     jni.srcDirs = [] 
     jniLibs.srcDirs=['libs'] 
    } 
} 

Это можно найти в модуле приложения, полное приложение build.gradle выглядит следующим образом (Ex.):

apply plugin: 'com.android.application' 

android { 
    compileSdkVersion 22 
    buildToolsVersion "22.0.1" 

    defaultConfig { 
     applicationId "org.opencv.samples.opencv3_facedetection" 
     minSdkVersion 15 
     targetSdkVersion 22 
     versionCode 1 
     versionName "1.0" 
    } 
    buildTypes { 
     release { 
      minifyEnabled false 
      proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' 
     } 
    } 

    sourceSets { 
     main { 
      jni.srcDirs = [] 
      jniLibs.srcDirs=['libs'] 
     } 
    } 
} 

dependencies { 
    compile fileTree(dir: 'libs', include: ['*.jar']) 
    testCompile 'junit:junit:4.12' 
    compile 'com.android.support:appcompat-v7:22.2.1' 
    compile project(':libraries:opencv') 
} 

Вот пример проекта импорта OpenCV 3.0 Распознавание лиц Sample в Android Studio :

https://github.com/DeLaSalleUniversity-Manila/opencvfacedetection-melvincabatuan

процедура может быть найдена в README.md.

Кроме того, если вы хотите попробовать Android программы Studio Gradle экспериментальный плагин для развития родного CPP с OpenCV, то вы можете быть заинтересованы в следующих типовых проектов:

Смежные вопросы