Я использую OpenCV2.4.7 Library в своем приложении Android. Когда приложение запускается, он переходит в магазин Google Play для приложения под названием OpenCV Manager. Является ли их каким-либо способом интегрировать это приложение в Android-приложение Android, потому что мы уже используем библиотеку OpenCV, так почему приложение снова нуждается в OpenCV Engine? это их способ интегрировать этот движок.
Как интегрировать OpenCV Manager в Android-приложение
Ответ 1
Да. Чтобы интегрировать OpenCV внутри приложения и избегать явной установки менеджера OpenCV, вам необходимо сначала прочитать следующий документ, предоставленный OpenCV.
Первое чтение → Статическая инициализация OpenCV
После успешного выполнения шагов вам необходимо написать следующий код, чтобы включить OpenCV в код инициализации приложения перед вызовом API OpenCV. Это можно сделать, например, в статическом разделе класса Activity:
static {
if (!OpenCVLoader.initDebug()) {
// Handle initialization error
}
}
Литература:
- http://answers.opencv.org/question/2033/use-opencv-on-android-without-manager/
- Статическая инициализация на OpenCV Android
Изменить
Согласно новому сценарию в документе и благодаря @rozhok для предоставления новой информации, метод initDebug() не может использоваться для сборки сборки
Примечание. Этот метод устарел для производственного кода. Он предназначен только для экспериментального и локального развития. Если вы хотите опубликовать свой подход к использованию приложения с асинхронной инициализацией.
Для этого нужно использовать следующий метод
Синтаксис
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);
}
...
}
Ссылки
Ответ 2
(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
}
}
}
};
Ответ 3
Это то, что документация говорит об установке 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
Ответ 4
Просто прокомментируйте строку в следующем коде
@Override
public void onResume()
{
super.onResume();
//OpenCVLoader.initAsync(OpenCVLoader.OPENCV_VERSION_2_4_3, this, mLoaderCallback);
}