Используйте OpenCV Mat в Android Java-приложении. Ошибка NoClassDefFound с матом OpenCV

Я разрабатываю приложение для 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 во время выполнения, и это все, что мне нужно?

Заранее спасибо.

0

Решение

Есть 3 способа включить OpenCV в ваше приложение

  1. Используйте NDK, чтобы скомпилировать opencv и написать свою собственную оболочку, включающую ваш код opencv c ++.
  2. Импортируйте модуль оболочки Java OpenCV, предоставляемый Android Opencv SDK, и подключите его к диспетчеру Opencv, установленному на вашем телефоне.
  3. Импортируйте модуль оболочки Java OpenCV, предоставляемый Android Opencv SDK, и скопируйте собственные библиотеки в свой проект.

Для варианта 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 в Android Studio

Доступ к большинству функций opencv можно получить напрямую с помощью java-оболочки. Так что вам может не понадобиться передавать какой-либо Mat в нативные функции C. Если вы все еще хотите вызывать собственные функции, вы можете обратиться к Java-оболочке Opencv за помощью и даже к примерам, предоставленным с SDK для дальнейшего понимания.

1

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector