Как решить java .lang.UnsatisfiedLinkError: Не реализована длинная реализация org.opencv.core.Mat.n_Mat (int, int, int) в Android Studio? - PullRequest
0 голосов
/ 19 апреля 2020

Это моя проблема:

Эта проблема появилась, когда я запускаю это приложение.

java.lang.UnsatisfiedLinkError: No implementation found for long org.opencv.core.Mat.n_Mat(int, int, int) (tried Java_org_opencv_core_Mat_n_1Mat and Java_org_opencv_core_Mat_n_1Mat__III)
 at org.opencv.core.Mat.n_Mat(Native Method)
 at org.opencv.core.Mat.<init>(Mat.java:477)
 at com.example.colordetection2.MainActivity.onCameraViewStarted(MainActivity.java:65)
 at org.opencv.android.CameraBridgeViewBase.processEnterState(CameraBridgeViewBase.java:320)
 at org.opencv.android.CameraBridgeViewBase.checkCurrentState(CameraBridgeViewBase.java:311)
 at org.opencv.android.CameraBridgeViewBase.surfaceChanged(CameraBridgeViewBase.java:197)
 at android.view.SurfaceView.updateSurface(SurfaceView.java:680)
 at android.view.SurfaceView$2.onPreDraw(SurfaceView.java:143)
 at android.view.ViewTreeObserver.dispatchOnPreDraw(ViewTreeObserver.java:977)
 at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:2394)
 at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1437)
 at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:6886)
 at android.view.Choreographer$CallbackRecord.run(Choreographer.java:1029)
 at android.view.Choreographer.doCallbacks(Choreographer.java:841)
 at android.view.Choreographer.doFrame(Choreographer.java:772)
 at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:1015)
 at android.os.Handler.handleCallback(Handler.java:794)
 at android.os.Handler.dispatchMessage(Handler.java:99)
 at android.os.Looper.loop(Looper.java:176)
 at android.app.ActivityThread.main(ActivityThread.java:6651)
 at java.lang.reflect.Method.invoke(Native Method)
 at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:547)
 at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:824)

Это моя основная активность:

package com.example.colordetection2;

import androidx.appcompat.app.AppCompatActivity;

import android.content.pm.ActivityInfo;
import android.os.Bundle;
import android.util.Log;
import android.view.Window;
import android.view.WindowManager;

import org.opencv.android.CameraBridgeViewBase;
import org.opencv.android.JavaCameraView;
import org.opencv.android.OpenCVLoader;
import org.opencv.core.Core;
import org.opencv.core.CvType;
import org.opencv.core.Mat;
import org.opencv.core.Scalar;
import org.opencv.imgproc.Imgproc;

public class MainActivity extends AppCompatActivity implements CameraBridgeViewBase.CvCameraViewListener2 {



    private static final String  TAG = "Example::ColorDetection2::Activity";
    private CameraBridgeViewBase mOpenCvCameraView;
    private Mat mRgba;

    JavaCameraView javaCameraView;
    Mat mat1,mat2;

    Scalar scalarLow,scalarHigh;

    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        OpenCVLoader.initDebug();

        javaCameraView = (JavaCameraView) findViewById(R.id.cameraview);
        javaCameraView.setCameraIndex(0);

        scalarLow = new Scalar(45,20,10);
        scalarHigh = new Scalar(75,255,255);
        javaCameraView.setCvCameraViewListener(this);
        javaCameraView.enableView();


    }

    protected void onPause() {
        super.onPause();
        javaCameraView.disableView();
    }

    protected void onResume() {
        super.onResume();
        javaCameraView.enableView();
    }

    protected void onDestroy() {
        javaCameraView.disableView();
        super.onDestroy();
    }

    public void onCameraViewStarted(int width, int height) {
        mRgba = new Mat(height, width, CvType.CV_8UC4);
    }

    public void onCameraViewStopped() {
        mRgba.release();
    }

    public void onCameraStarted(int width, int height)
    {
        mat1 = new Mat(width,height,CvType.CV_16UC4);
        mat2 = new Mat(width,height,CvType.CV_16UC4);

    }

    public Mat onCameraFrame(CameraBridgeViewBase.CvCameraViewFrame inputFrame) {

        Imgproc.cvtColor(inputFrame.rgba(),mat1, Imgproc.COLOR_BGR2HSV);
        Core.inRange(mat1,scalarLow,scalarHigh,mat2);

        return mat2;

    }
}

Итак, есть код моей MainActivity, который я использую для этого приложения.

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

Кто-нибудь может помочь мне решить проблему?

Спасибо!

...