Intereting Posts
Изменить цвет круга переключателя – Android Примеры презентаторов / контроллеров модели андроидов Android с Gradle (Java завершена с ненулевым значением выхода 2) Как создавать карты, которые обнаруживают автоматическое местоположение в React-Native Включить службы определения местоположения без перехода на страницу настроек Как установить атрибут android: layout_alignParentLeft для просмотра изображений в коде? Служба Google Play Services отсутствует в папке «Дополнительно» в SDK Manager Могу ли я передавать различные типы параметров AsyncTask в Android? Отменить загрузку в WebView на Android Перетаскивание в «ListView» Android FileNotFoundException res / drawable-hdpi / scrollbar_handle_vertical.9.png Преобразование видео для Android с использованием FFMPEG Webview crash NullPointerException android.webkit.WebViewDatabase.initDatabase (WebViewDatabase.java:234) Как я могу получить доступ к моему локальному хосту с моего устройства Android? Сигнал 11 SIGSEGV Crash в Galaxy S3 Android WebView

Как интегрировать OpenCV в проект Android Qt Creator

Я использую Qt Creator для компиляции приложения для Android. Мне нужно было интегрировать OpenCV в него, и мне потребовалось полдня, чтобы настроить его правильно, поэтому я хочу документировать шаги, которые я сделал здесь, на случай, если кто-то еще это сделает.

Solutions Collecting From Web of "Как интегрировать OpenCV в проект Android Qt Creator"

Во-первых, я загрузил OpenCV-2.4.10-android-sdk и поместил в свою директорию проектов. Он содержит статические библиотеки, и порядок ссылок имеет значение для статических библиотек для GCC . Поэтому вам нужно заказать их именно так. Вот как выглядел мой .pro-файл в конце ( $$ _ PRO_FILE_PWD_ относится к каталогу проекта):

INCLUDEPATH += "$$_PRO_FILE_PWD_/OpenCV-2.4.10-android-sdk/sdk/native/jni/include" android { LIBS += \ -L"$$_PRO_FILE_PWD_/OpenCV-2.4.10-android-sdk/sdk/native/3rdparty/libs/armeabi-v7a"\ -L"$$_PRO_FILE_PWD_/OpenCV-2.4.10-android-sdk/sdk/native/libs/armeabi-v7a"\ -llibtiff\ -llibjpeg\ -llibjasper\ -llibpng\ -lIlmImf\ -ltbb\ -lopencv_core\ -lopencv_androidcamera\ -lopencv_flann\ -lopencv_imgproc\ -lopencv_highgui\ -lopencv_features2d\ -lopencv_calib3d\ -lopencv_ml\ -lopencv_objdetect\ -lopencv_video\ -lopencv_contrib\ -lopencv_photo\ -lopencv_java\ -lopencv_legacy\ -lopencv_ocl\ -lopencv_stitching\ -lopencv_superres\ -lopencv_ts\ -lopencv_videostab ANDROID_PACKAGE_SOURCE_DIR=$$_PRO_FILE_PWD_/android } 

После этого проект будет компилироваться, но он не будет работать с ошибкой

 E/AndroidRuntime(11873): java.lang.UnsatisfiedLinkError: Cannot load library: link_image[1891]: 176 could not load needed library 'libopencv_java.so' for 'libMyProject.so' (load_library[1093]: Library 'libopencv_java.so' not found) 

Чтобы преодолеть это, вам нужно добавить libopencv_java.so в APK , а затем вручную загрузить его из QtActivity.java. Вот в конце концов была ANDROID_PACKAGE_SOURCE_DIR=$$_PRO_FILE_PWD_/android линия. Теперь вам нужно разместить libopencv_java.so здесь:

 project_root/android/libs/armeabi-v7a/libopencv_java.so project_root/android/src/org/qtproject/qt5/android/bindings/QtActivity.java 

Вы можете получить QtActivity.java из каталога целевой сборки Android, в моем случае полный путь был c:\Workspace\build-MyProject-Android_for_armeabi_v7a_GCC_4_9_Qt_5_4_0-Debug\android-build\src\org\qtproject\qt5\android\bindings\QtActivity.java , и просто скопируйте его.

Затем вы найдете эти строки в нем:

  // now load the application library so it's accessible from this class loader if (libName != null) System.loadLibrary(libName); 

И загрузите libopencv_java.so перед ними, чтобы они стали:

  // This is needed for OpenCV!!! System.loadLibrary("opencv_java"); // now load the application library so it's accessible from this class loader if (libName != null) System.loadLibrary(libName); 

Обратите внимание, что вы передаете opencv_java в System.loadLibrary() , хотя файл libopencv_java.so .


Edit: Я забыл упомянуть, но я уже установил OpenCV Manager на своем телефоне при попытке запустить один из образцов, поставляемых с OpenCV-2.4.10-android-sdk, поэтому я не знаю, нужно ли это или нет. В любом случае, имейте это в виду, если он не срабатывает даже после моих шагов, вам может потребоваться загрузить OpenCV Manager (он доступен в Google Store).

Edit 2: Я использую adt-bundle-windows-x86-20140702, android-ndk-r10d, OpenCV-2.4.10-android-sdk, Qt Creator 3.3.0, а моя цель сборки – «Android для armeabi-v7a (GCC 4.9, Qt 5.4.0) ".

Редактировать 3: Из комментария Даниэля Санера :

В OpenCV 3.x opencv_java был переименован в opencv_java3. Кроме того, хотя я не рассматривал конкретные изменения, которые могли бы это сделать, обходной путь в отношении этой библиотеки на последнем этапе, похоже, больше не нужен. Приложение компилируется и запускается без строки ANDROID_PACKAGE_SOURCE_DIR

Редактировать 4 : комментарий @ myk:

Работала для меня с OpenCV 3.2. Чтобы обойти проблемы сборки с отделкой каротином, раздел LIBS + с: -lopencv_videostab \ -ltegra_hal \ – myk 2 часа назад