Я пытаюсь запустить предварительный просмотр камеры на устройстве 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 ()
Любая идея ?
Спасибо




Из этой части сообщения об ошибке я вижу, что 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");
}
Когда все заработает, вы должны определить, нужно ли вам переходить на динамическую загрузку или это хорошо.