Ошибка инициализации Android OpenCV JavaCamera2View

Я пытаюсь запустить предварительный просмотр камеры на устройстве Android с opencv с помощью JavaCamera2View. У меня нет проблем со старым JavaCameraView.

Вот сообщение об ошибке.

2018-11-23 13:56:03.199 8034-8052/com.lesafrance.dev.cam2 E/art: No implementation found for long org.opencv.core.Mat.n_Mat(int, int, int, java.nio.ByteBuffer) (tried Java_org_opencv_core_Mat_n_1Mat and Java_org_opencv_core_Mat_n_1Mat__IIILjava_nio_ByteBuffer_2) 2018-11-23 13:56:03.200 8034-8052/com.lesafrance.dev.cam2 E/AndroidRuntime: FATAL EXCEPTION: OpenCVCameraBackground Process: com.lesafrance.dev.cam2, PID: 8034 java.lang.UnsatisfiedLinkError: No implementation found for long org.opencv.core.Mat.n_Mat(int, int, int, java.nio.ByteBuffer) (tried Java_org_opencv_core_Mat_n_1Mat and Java_org_opencv_core_Mat_n_1Mat__IIILjava_nio_ByteBuffer_2) at org.opencv.core.Mat.n_Mat(Native Method) at org.opencv.core.Mat.(Mat.java:52) at org.opencv.android.JavaCamera2View$2.onImageAvailable(JavaCamera2View.java:183) at android.media.ImageReader$ListenerHandler.handleMessage(ImageReader.java:687) at android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loop(Looper.java:154) at android.os.HandlerThread.run(HandlerThread.java:61)

Я знаю, что это обычное дело без инициализации OpenCV, но в моем коде OpenCV должен быть запущен Вот код

<!-- language: lang-java -->
     /*
     * JavaCamera2View (CameraBridgeViewBase) Loader
     */
    private BaseLoaderCallback mLoaderCallback = new BaseLoaderCallback(this) {
        @Override
        public void onManagerConnected(int status) {
            switch (status) {
                case LoaderCallbackInterface.SUCCESS:
                {
                    Log.i(TAG, "OpenCV loaded successfully");
                    // Création des LUT
                    lutBLY = new Mat(1,256,CvType.CV_8UC3);

                    //Here LUT initialisation is ok    

                    mOpenCvCameraView.enableView(); //Fail here
                } break;
                default:
                {
                    super.onManagerConnected(status);
                } break;
            }
        }
    }; 

Он не работает после вызова enableView () в createCameraPreviewSession ()

Любая идея ?

Спасибо

Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
0
388
1

Ответы 1

Из этой части сообщения об ошибке я вижу, что OpenCV вообще не загружается, поэтому он не может найти реализацию для Mat.

OpenCVCameraBackground Process: com.lesafrance.dev.cam2, PID: 8034 java.lang.UnsatisfiedLinkError: No implementation found for long org.opencv.core.Mat.n_Mat(int, int, int, java.nio.ByteBuffer) (tried

Попробуйте добавить статический загрузчик для OpenCV в качестве обходного пути, например, добавьте его непосредственно перед классом BaseLoaderCallback.

static {
    if (!OpenCVLoader.initDebug())
        Log.d("ERROR", "Unable to load OpenCV");
    else
        Log.d("SUCCESS", "OpenCV loaded");
}

Когда все заработает, вы должны определить, нужно ли вам переходить на динамическую загрузку или это хорошо.

Другие вопросы по теме