OpenCV和Android的UnsatisfiedLinkError

时间:2017-01-29 11:29:00

标签: android opencv unsatisfiedlinkerror

我正在尝试使用openCV构建一个新的应用程序,但我的应用程序崩溃,甚至没有一个日志语句。然后我将Crashlytics集成到我的应用程序中,它显示了以下问题

Fatal Exception: java.lang.UnsatisfiedLinkError: No implementation found for void org.opencv.imgproc.Imgproc.Canny_3(long, long, double, double) (tried Java_org_opencv_imgproc_Imgproc_Canny_13 and Java_org_opencv_imgproc_Imgproc_Canny_13__JJDD)
       at org.opencv.imgproc.Imgproc.Canny_3(Imgproc.java)
       at org.opencv.imgproc.Imgproc.Canny(Imgproc.java:1038)
       at aac.scanner.MainActivity.onCameraFrame(MainActivity.java:72)
       at org.opencv.android.CameraBridgeViewBase.deliverAndDrawFrame(CameraBridgeViewBase.java:392)
       at org.opencv.android.JavaCameraView$CameraWorker.run(JavaCameraView.java:352)
       at java.lang.Thread.run(Thread.java:818)

对于这个问题,我还检查了其他答案,如Android UnsatisfiedLinkError with OpenCV 2.4.2Unsatisfied Link Error - OpenCV for Android Non-native,但其中没有一个对我有效。

由于我的应用程序项目没有JNI部分,所以我将相应的OpenCV本机库从/ sdk / native / libs /复制到我的项目目录到文件夹main / jniLibs,如此tutorial所示

onResume 方法

super.onResume();
if (!OpenCVLoader.initDebug()) {
    Log.d(TAG, "Internal OpenCV library not found. Using OpenCV Manager for initialization");
    OpenCVLoader.initAsync(OpenCVLoader.OPENCV_VERSION_3_0_0, this, baseLoaderCallback);
} else {
    Log.d(TAG, "OpenCV library found inside package. Using it!");
    baseLoaderCallback.onManagerConnected(LoaderCallbackInterface.SUCCESS);
}

onCameraFrame 方法

rgba = inputFrame.rgba();
Imgproc.GaussianBlur(rgba,gray,new Size(5,5),0);
Imgproc.Canny(gray,canny,75,200);
return canny;

BaseLoaderCallback

private BaseLoaderCallback baseLoaderCallback = new BaseLoaderCallback(this) {
    @Override
    public void onManagerConnected(int status) {
        switch (status){
            case LoaderCallbackInterface.SUCCESS:
                Log.i(TAG,"onManagerConnected");
                javaCameraView.enableView();
                break;
            default:
                super.onManagerConnected(status);
                break;
        }
    }
};

更新 因为我从运行非Native openCV代码获得UnsatisfiedLinkError,所以SO上类似帖子的解决方案都没有为我工作。我已经在Native openCV代码中编写了所有代码,现在我的代码运行没有任何错误。

0 个答案:

没有答案