Как интегрировать OpenCV Manager в Android-приложение
Я использую библиотеку OpenCV2.4.7 в своем приложении для Android . Когда приложение запускается, он переходит в магазин Google Play для Appication под названием OpenCV Manager . Является ли их каким-либо способом интегрировать это приложение в Android-приложение Android, потому что мы уже используем библиотеку OpenCV, так почему приложение снова нуждается в OpenCV Engine? это их способ интегрировать этот движок.
- Рекомендуемые значения для параметров OpenCV detectMultiScale ()
- OpenCV Birdseye без потери данных
- Обнаружение монет (и совпадающих эллипсов) на изображении
- Распознавание лиц на Android
- Сериализация OpenCV Mat_
- подключенных компонентов в OpenCV
- Как обнаружить простые геометрические фигуры с помощью OpenCV
- Извлечение коэффициентов DCT из кодированных изображений и видео
Да. Чтобы интегрировать OpenCV внутри приложения и избегать явной установки менеджера OpenCV, вам необходимо сначала прочитать следующий документ, предоставленный OpenCV.
Первое чтение -> Статическая инициализация OpenCV
После успешного выполнения шагов вам необходимо написать следующий код, чтобы включить OpenCV в код инициализации вашего приложения перед вызовом API OpenCV. Это можно сделать, например, в статическом разделе classа Activity:
static { if (!OpenCVLoader.initDebug()) { // Handle initialization error } }
Рекомендации:
- http://answers.opencv.org/question/2033/use-opencv-on-android-without-manager/
- Статическая инициализация на OpenCV Android
редактировать
Согласно новому сценарию в документе и благодаря @rozhok для предоставления новой информации, метод initDebug () не может использоваться для сборки сборки
Примечание. Этот метод устарел для производственного кода. Он предназначен только для экспериментального и локального развития. Если вы хотите опубликовать свой подход к использованию приложения с инициализацией async.
Вы должны использовать следующий метод для этого
Синтаксис
static boolean initAsync(String Version, Context AppContext, LoaderCallbackInterface Callback)
пример
public class Sample1Java extends Activity implements CvCameraViewListener { private BaseLoaderCallback mLoaderCallback = new BaseLoaderCallback(this) { @Override public void onManagerConnected(int status) { switch (status) { case LoaderCallbackInterface.SUCCESS: { Log.i(TAG, "OpenCV loaded successfully"); mOpenCvCameraView.enableView(); } break; default: { super.onManagerConnected(status); } break; } } }; @Override public void onResume() { super.onResume(); OpenCVLoader.initAsync(OpenCVLoader.OPENCV_VERSION_2_4_6, this, mLoaderCallback); } ... }
Рекомендации
(1 Вставьте эти строки после включения $ (CLEAR_VARS) в файл opencv.mk
OPENCV_CAMERA_MODULES:=on OPENCV_INSTALL_MODULES:=on include D:/opencv_with/OpenCV-2.4.10-android-sdk/sdk/native/jni/OpenCV.mk
(2 В текущей папке каталога каталога libs копирует всю папку внутри opencv libs.
(3 Добавить в вашу деятельность
if (!OpenCVLoader.initDebug()) { Log.d("ERROR", "Unable to load OpenCV"); } else { mLoaderCallback.onManagerConnected(LoaderCallbackInterface.SUCCESS); } private BaseLoaderCallback mLoaderCallback = new BaseLoaderCallback(this) { @Override public void onManagerConnected(int status) { switch (status) { case LoaderCallbackInterface.SUCCESS: { //Your opencv Operation code } } } };
Это то, что документация говорит об установке OpenCV Manager:
Папка apk содержит пакеты Android, которые должны быть установлены на целевом устройстве Android, чтобы включить доступ к библиотеке OpenCV через API OpenCV Manager (см. подробности ниже).
На производственных устройствах, имеющих доступ к Google Play Market (и Интернет), эти пакеты будут установлены с Market при первом запуске приложения с использованием API OpenCV Manager.
…
Примечание. Установка из Интернета предпочтительнее, так как команда OpenCV может публиковать обновленные версии этих пакетов на рынке.
Подробнее об этом можно узнать здесь: https://docs.opencv.org/3.0-beta/doc/tutorials/introduction/android_binary_package/O4A_SDK.html#general-info
Просто прокомментируйте строку в следующем коде
@Override public void onResume() { super.onResume(); //OpenCVLoader.initAsync(OpenCVLoader.OPENCV_VERSION_2_4_3, this, mLoaderCallback); }