Загрузите пакет opencv Android (например, opencv-4.0.1-android-sdk ) и распакуйте, скажем, ~/android
.
Вниз 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, чтобы обеспечить лучшую поддержку импортированных общих библиотек .