Как я могу интегрировать OpenCV 4.0 в чистый проект C ++ для Android NDK? - PullRequest
0 голосов
/ 03 марта 2019

Какие шаги необходимы мне для интеграции,

последней версии OpenCV

в чистый проект C ++ (без кода Java) Android NDK, напримеркак Android NDK Google учебник:

Endless-Tunnel ?

официальная документация для интеграции с Android относится к гораздо более старой версии: OpenCV-2.4 и папкеструктуры больше не одинаковы.

Я использую Android Studio в Linux.

Вся помощь высоко ценится.

1 Ответ

0 голосов
/ 04 марта 2019
  1. Загрузите пакет opencv Android (например, opencv-4.0.1-android-sdk ) и распакуйте, скажем, ~/android.

  2. Вниз CMakeLists.txt , добавьте

    set( OpenCV_DIR "~/android/OpenCV-android-sdk/sdk/native/jni" )
    find_package( OpenCV REQUIRED )
    target_link_libraries(game opencv_java)
    
    get_target_property(__src opencv_java IMPORTED_LOCATION_RELEASE )
    add_custom_command(TARGET game POST_BUILD COMMAND
      ${CMAKE_COMMAND} -E copy ${__src} ${CMAKE_LIBRARY_OUTPUT_DIRECTORY}
    )
    

Пакет определит следующие переменные:

OpenCV_LIBS: Список всех импортированных целей для модулей OpenCV.

OpenCV_INCLUDE_DIRS: В список OpenCV входят каталоги.С CMake> = 2.8.11 вам даже не нужно писать

include_directories(${OpenCV_INCLUDE_DIRS})

Эта версия готового OpenCV SDK определяет также

OpenCV_VERSION: Версия этогоСборка OpenCV: "4.0.1"

OpenCV_ANDROID_NATIVE_API_LEVEL: Минимально необходимый уровень Android API: "16" .

Это означает, что манифесту вашего приложения требуется minSdkVersion 16 или выше (исходный пример требует исправления здесь ).

Вместо общей библиотеки, которая содержит все функции OpenCVВы можете использовать статические библиотеки ( opencv_imgcodecs , opencv_stitching , и др. ).Эти статические библиотеки принимают значение по умолчанию ANDROID_STL = c ++ _ static .

. Для достижения наилучших результатов используйте NDK r.18 или r.19 .

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...