在Android上找不到Canny的实现< 6

时间:2017-01-03 13:34:01

标签: android opencv java-native-interface unsatisfiedlinkerror

使用openCVLibrary320 for Android我在项目中遇到错误:

W/dalvikvm: No implementation found for native Lorg/opencv/imgproc/Imgproc;.Canny_2:(JJDDIZ)V
W/dalvikvm: threadid=12: thread exiting with uncaught exception (group=0x9cd7fb20)
E/AndroidRuntime: FATAL EXCEPTION: Thread-68
              Process: hantke.niklas.mnotes, PID: 2144
              java.lang.UnsatisfiedLinkError: Native method not found: org.opencv.imgproc.Imgproc.Canny_2:(JJDDIZ)V
                  at org.opencv.imgproc.Imgproc.Canny_2(Native Method)
                  at org.opencv.imgproc.Imgproc.Canny(Imgproc.java:1029)
                  at hantke.niklas.mnotes.MainActivity.detectStaffLines(MainActivity.java:121)
                  at hantke.niklas.mnotes.MainActivity.onCameraFrame(MainActivity.java:173)
                  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:841)

这是我第一次调用方法canny但事先我调用cvtColor和equalizeHist没有任何错误。

在API 25模拟器上运行良好,但既不适用于API 19 emu,也不适用于Android 5.1的Android手机。 每个模拟器和手机上都安装了与SDK 3.20捆绑在一起的最新版本的openCV管理器

1 个答案:

答案 0 :(得分:0)

我发现了我的错误。

问题在于openCV的初始化: 我不得不写:

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    OpenCVLoader.initAsync(OpenCVLoader.OPENCV_VERSION_3_2_0, this, mLoaderCallback);
}

而不是

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

因为我使用的是3.2.0版本。 奇怪的是,它适用于Android 6模拟器。