No implementation found for native Lorg/opencv/core/Mat;.n_Mat ()J

仅以此纪念我被Opencv4Android的被虐之旅。。。
看了Opencv4Android的人脸检测例子,想改写成检测静态图像的。然后很多bug[大哭]。虽然我还是没解决,但从网上也看到了些方法,先记录的说~

1、No implementation found for native Lorg/opencv/core/Mat;.n_Mat ()J
确保已经包含以下代码

//OpenCV类库加载并初始化成功后的回调函数,在此我们不进行任何操作
    private BaseLoaderCallback  mLoaderCallback = new BaseLoaderCallback(this) {
        @Override
        public void onManagerConnected(int status) {
            switch (status) {
                case LoaderCallbackInterface.SUCCESS:{
                } break;
                default:{
                    super.onManagerConnected(status);
                } break;
            }
        }
    };

以及

@Override
    public void onResume(){
        super.onResume();
        //通过OpenCV引擎服务加载并初始化OpenCV类库,所谓OpenCV引擎服务即是
        //OpenCV_2.4.3.2_Manager_2.4_*.apk程序包,存在于OpenCV安装包的apk目录中
        OpenCVLoader.initAsync(OpenCVLoader.OPENCV_VERSION_2_4_3, this, mLoaderCallback);
    }

B、如果没有采用jni调用的方式,可以试着把对应的opencv本地库(/sdk/native/libs/)复制大到你的项目的libs目录下。
C、在调用opencv的java API之前,必须确保你的项目可以用Opencv,你可以在oncreat之前加:

static {
    if (!OpenCVLoader.initDebug()) {
        // Handle initialization error
    }
}

你也可以像这样

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_load_image);
    if (!OpenCVLoader.initDebug()) {
        // Handle initialization error
    }
    [...]
}

你可能感兴趣的:(android,opencv)