Ответ 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);
}
...
}
Ссылки