Android中的OpenCV

Android中的OpenCV,android,opencv,Android,Opencv,我正在安卓系统中使用Opencv,我想将图片从gallery加载到Mat,请检查我的代码,并帮助我了解我做错了什么 protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult( requestCode, resultCode, data ); if (requestCode == GALLERY_INTENT &&

我正在安卓系统中使用Opencv,我想将图片从gallery加载到Mat,请检查我的代码,并帮助我了解我做错了什么

 protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult( requestCode, resultCode, data );

    if (requestCode == GALLERY_INTENT && resultCode == RESULT_OK) {

        Uri imageUri = data.getData();
        String selectedImagePath = getPath(imageUri);

    Mat imgRgba = Imgcodecs.imread( selectedImagePath );
    Mat img = new Mat();
    imgRgba.copyTo(img);
   }

private String getPath(Uri imageUri) {
    String[] projection = {MediaStore.Images.Media.DATA};
    Cursor cursor = getContentResolver().query( imageUri, projection, null, null, null );
    if(cursor!=null){
        int column_index = cursor.getColumnIndexOrThrow( MediaStore.Images.Media.DATA );
        cursor.moveToFirst();
        return cursor.getString( column_index );

    }

    return imageUri.getPath();
}
当我运行它时,它会崩溃:
java.lang.unsatifiedLinkError:long org.opencv.imgcodecs.imgcodecs.imread_1(java.lang.String)(已尝试过java_org_opencv_imgcodecs_imread_11和java_org_opencv_imgcodecs_imgcodecs_imread_11_java_lang_String_2)
在org.opencv.imgcodecs.imgcodecs.imread_1(本机方法)

在org.opencv.imgcodecs.imgcodecs.imread(imgcodecs.java:118)
在Android上使用之前,您必须初始化opencv库

在使用OpenCV之前调用下面的代码

OpenCVLoader.initAsync(OpenCVLoader.OPENCV_VERSION_2_4_11, this, baseLoaderCallback);
然后,下面的方法将被回调

  @Override
  public void onManagerConnected(int status) {
       switch (status) {
            case LoaderCallbackInterface.SUCCESS:
            {
                 Log.i(TAG, "OpenCV loaded successfully");
            } break;
            default:
            {
                 super.onManagerConnected(status);
            } break;
       }
  }

})

有人怎么知道“我做错了什么”?不知道你所面临的问题?您得到的是空的
垫吗?你有例外吗?阅读
Lena.png
时,您是否看到贾斯汀·比伯的图像?抱歉,应用程序在这行中崩溃
Mat imgRgba=Imgcodecs.imread(selectedImagePath)上面写着
java.lang.UnsatifiedLinkError:long org.opencv.imgcodecs.imgcodecs.imread_1(java.lang.String)(在org.opencv.imgcodecs.imgcodecs.imgcodecs.imread_11和java_org_opencv_imgcodecs_imgcodecs_imread_11_Ljava_lang_String_2)中未找到实现(本机方法)在org.opencv.imgcodecs.imgcodecs.imread(imgcodecs.java:118)
搜索项目中的
imgcodecs.java
文件(点击双击,Android Studio快捷方式搜索文件)。在该文件中搜索
imread()
方法,查看它是否存在?还请注意该方法的签名。其他OpenCV API似乎工作正常,但
Imgcodecs.imread()
不是:/yaa它存在:
public static Mat imread(String filename,int flags){Mat retVal=new Mat(imread_0(filename,flags));return retVal;}