Как я могу интегрировать OpenCV 4.0 в чистый C ++ Android NDK проект?

Это, например, приведет к тому, что файлы, заканчивающиеся на .variables и .overrides, будут обрабатываться так же, как и любой другой файл LESS. С точки зрения окраски кода, с точки зрения (авто) форматирования. Определите в пользовательских настройках или настройках проекта, как вам нравится.

(Семантический интерфейс использует эти странные расширения, если вам интересно)

4
задан DisplayName 3 March 2019 в 09:15
поделиться

1 ответ

  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 build: «4.0.1»

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

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

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

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

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

0
ответ дан Alex Cohn 3 March 2019 в 09:15
поделиться
Другие вопросы по тегам:

Похожие вопросы: