Я пытаюсь сделать OpenCV доступным в собственном коде cpp в модуле app
проекта Android.У меня есть доступ к OpenCV в Java-коде, это нативная часть интеграции, с которой у меня проблемы.
Моя настройка:
- Создайте новый проект Android с шаблоном собственного кода, поэтомучто я начинаю с файлов
native-lib.cpp
, CMakeLists.txt
и собственной настройки сборки в app/build.gradle
- Скопируйте папку
opencv-3.4.7-android-sdk/sdk
в проект Android и переименуйте ее в opencv
- Зарегистрируйте
opencv
как модуль в settings.gradle
(include ':opencv'
) - Настройте версии SDK в
opencv/build.gradle
- Установите
app
в зависимости от opencv
(implementation project(':opencv')
) - Установите флаги и аргументы CMake cpp в соответствии с документацией
opencv/build.gradle
cppFlags "-std=c++11 -frtti -fexceptions"
arguments "-DOpenCV_DIR=../opencv/native/jni/"
- Вызовите
find_package(OpenCV REQUIRED)
и target_link_libraries(native-lib ${OpenCV_LIBS})
в app/src/main/cpp/CMakeLists.txt
(согласно документации в OpenCVConfig.cmake
)
После всего этого синхронизация проекта завершается неудачно: «Не удалось найти конфигурацию пакетафайл, предоставленный "OpenCV" с любым из следующих имен: OpenCVConfig.cmake, opencv-config.cmake "
Путь к OpenCVConfig.cmake
: opencv/native/jni/OpenCVConfig.cmake
Это означаетчто аргумент -DOpenCV_DIR
должен быть правильным (я также пытался использовать абсолютные пути), поэтому CMake должен найти файл, который ищет.