Вопрос по java, android, opencv, static, initialization – Статическая инициализация на OpenCV Android [дубликат]

20

На этот вопрос уже есть ответ:

OpenCV в Android Studio 7 ответов

я пытаюсь бежатьOpenCV Урок 1 - Добавьте OpenCV со статической инициализацией, используяэт
Я не хочу, чтобы было установлено отдельное приложение OpenCV Manager), но я получаю"OpenCV error: Cannot load info library for OpenCV."

Я сделал следующие вещи:

добавил папку libs сarmeabi, armeabi-v7a, а такжеx86 папки внутри него (из OpenCV-2.4.2-android-sdk / sdk / native / libs /)

добавил статический{if (!OpenCVLoader.initDebug())} код чуть ниже частного Sample1View mView;

убрал приведенный ниже код

if (! OpenCVLoader.initAsync (OpenCVLoader.OPENCV_VERSION_2_4_2, this, mOpenCVCallBack))

В чем проблема

У меня тоже такая же проблема. Вы это исправили? Manoj
@ Manoj к сожалению, никто еще не предлагал исправить это. Droidkie
Я до сих пор не понимаю, почему разработчики OpenCV считают, что это должна быть «отладочная» установка. Если пользователь загружает приложение, кажется, что нет смысла заставлять его загружать приложение в приложении. Поставщик приложения должен нести ответственность за то, какие версии сторонних библиотек они используют и проверяют, поскольку нет гарантии, что обновленная версия OpenCV будет бесперебойно работать с моим приложением. alex.p

Ваш Ответ

4   ответа
4

я решил эту проблему, добавив следующий код в первый класс моего занятия:

static {
    if (!OpenCVLoader.initDebug()) {
        // Handle initialization error
    }
}

Я тоже добавил

mLoaderCallback.onManagerConnected(LoaderCallbackInterface.SUCCESS);

перед строкой

OpenCVLoader.initAsync(OpenCVLoader.OPENCV_VERSION_2_4_3, this, mLoaderCallback); 

и прокомментировал строку

OpenCVLoader.initAsync(OpenCVLoader.OPENCV_VERSION_2_4_3, this, mLoaderCallback);

Удачи

Вы смешиваете статическую и асинхронную инициализацию. David Miguel
11

mOpenCVCallBack.onManagerConnected(LoaderCallbackInterface.SUCCESS);

после

if(!OpenCVLoader.initAsync(OpenCVLoader.OPENCV_VERSION_2_4_2, this, mOpenCVCallBack)) 

Если вы удалите:

if(!OpenCVLoader.initAsync(OpenCVLoader.OPENCV_VERSION_2_4_2, this, mOpenCVCallBack))  

код блока, тогда никто не звонит.

Надеюсь, это поможет тебе.

Я изменился Qichao Chen
Это асинхронная инициализация, а не статическая, как этого хотел пользователь. David Miguel
Пожалуйста, отредактируйте свой ответ и отформатируйте код, чтобы сделать его читабельным. kleopatra
Куда нам добавить этот код? как называется класс? daigoor
1

Сообщение журнала:

"OpenCV error: Cannot load info library for OpenCV."

shuld не беспокоить тебя. По крайней мере, в моем приложении это говорит мне, что что-то вроде OpenCV libs init в порядке.

В примере кода объект CameraBridgeViewBase включается при вызове BaseLoaderCallback. Это происходит после завершения асинхронной загрузки библиотеки opencv. Когда вы загружаете библиотеку статически, попробуйте добавить вызов mOpenCVCameraView.enableView () в ваш метод onResume () (после загрузки библиотеки coourse).

0

ваших библиотек jni.

Проверьте функцию обратного вызова и сделайте ее правильной в if (! OpenCVLoader.initDebug ()), а не в обратном вызове!

            if (!OpenCVLoader.initDebug()) {
            // Handle initialization error
              Log.i(TAG, "OpenCV load not successfully");
        } else {
            System.loadLibrary("mixed_sample");
            //System.loadLibrary("my_jni_lib2");

            InitFeature(width,height);

            mOpenCvCameraView.enableView();
        }

это работает для учебника 2 в OCV4Android2.4.5.

Похожие вопросы