Я разрабатываю приложение для Android на Java, которое вызывает функцию в нативной библиотеке c. Для нативной функции требуется указатель на тип Opencv Mat, поэтому мне нужно иметь возможность создавать тип Opencv Mat в своем Java-приложении для передачи в нативную библиотеку.
Я использую Android Studio и добавил .jar файл ‘opencv library’ в папку libs моего проекта. Таким образом, я могу импортировать необходимые модули Opencv и создать тип Opencv Mat / получить доступ к его функциям. Проблема во время выполнения я получаю следующую ошибку:
java.lang.NoClassDefFoundError: org.opencv.core.Mat
Я читал, что файл OpenJV .jar — это просто оболочка для нативной функциональности, и приложению нужна «нативная библиотека». Как мне найти / добавить это? Что мне нужно добавить в мой проект, чтобы приложение могло найти определение класса Opencv Mat во время выполнения? Я только хочу использовать тип OpenCV Mat и ничего больше.
Я прочитал учебные пособия по настройке OpenCV Android, но они требуют установки приложения OpenCV Manager на устройстве Android, но это может быть проблемой для меня, потому что у меня не будет доступа к устройствам, на которых будет установлено мое приложение, и к OpenCV Приложение Manager не будет установлено на этих устройствах. Вместо этого, есть ли просто библиотека «.so», которую я могу добавить в свой проект Android Studio, которая будет связана с моим проектом и позволит приложению находить требуемый класс Mat во время выполнения, и это все, что мне нужно?
Заранее спасибо.
Есть 3 способа включить OpenCV в ваше приложение
Для варианта 1 вам нужно будет настроить проект ndk. Для 2, 3 вы можете просто импортировать модуль android opencv и инициализировать его в своем коде, вызвав —
if(!OpenCVLoader.initDebug()) {
Log.d(TAG, "Internal OpenCV library not found. Using OpenCV Manager for initialization.");
OpenCVLoader.initAsync(OpenCVLoader.OPENCV_VERSION_3_0_0, this, mLoaderCallback);
} else {
Log.d(TAG, "OpenCV library found inside package using it.");
mLoaderCallback.onManagerConnected(LoaderCallbackInterface.SUCCESS);
}
Обратитесь к следующим ссылкам для установки OpenCV Android SDK в вашем проекте Android Studio —
http://blog.codeonion.com/2015/11/25/creating-a-new-opencv-project-in-android-studio/
Доступ к большинству функций opencv можно получить напрямую с помощью java-оболочки. Так что вам может не понадобиться передавать какой-либо Mat в нативные функции C. Если вы все еще хотите вызывать собственные функции, вы можете обратиться к Java-оболочке Opencv за помощью и даже к примерам, предоставленным с SDK для дальнейшего понимания.
Других решений пока нет …