Фон
Хотя более старые версии OpenCV (т.е. 2.4) позволяют проектам Android использовать функциональность SIFT
, разделение этих функций на opencv_contrib
усложняет задачу; интеграция модуля OpenCV-3.x.x-android-sdk
в проект лишает вас возможности использовать функциональность SIFT
.
FeatureDetector.create(FeatureDetector.DYNAMIC_SIFT); // Fails
//OpenCV Error: Bad argument (Specified feature detector type is not supported.)
Использование внешних инструментов
Хотя существуют такие методы, как Гоуи Ван, которые описывают, как встроить несвободную часть OpenCV в проект Android, этот процесс требует внешних инструментов. Этот вопрос о том, как получить тот же результат, но вместо этого использовать мощь и удобство Android Studio/InteliJ.
Использование CMake в Android Studio
Современные версии Android Studio имеют полезную функциональность:
Используя Android Studio 2.2 и выше, вы можете использовать NDK для компиляции кода C и C++ в собственную библиотеку и упаковки его в ваш APK с помощью Gradle, интегрированной системы сборки IDE. Ваш код Java может затем вызывать функции в вашей собственной библиотеке через собственный интерфейс Java (JNI)
Как указано в этом вопросе и ответе qaru.site/info/55215/..., можно быстро интегрировать OpenCV 3.1 (и я подозреваю другие версии) opencv4android в структуру сборки C++, сгенерированную в Мастер новых приложений.
Я подозреваю, что кто-то, кто понимает детали строительных проектов, мог бы использовать Building_OpenCV4Android_from_trunk, чтобы ответить на этот вопрос. Мой опыт в этой области ограничен, таким образом, вопрос.
Какие конкретные шаги потребуются для того, чтобы заставить несвободную часть OpenCV полностью собираться в процессе сборки Android Studio?