情况如下:
Caused by: java.lang.UnsatisfiedLinkError: No implementation found for long org.opencv.core.Mat.n_Mat() (tried Java_org_opencv_core_Mat_n_1Mat and Java_org_opencv_core_Mat_n_1Mat__)
at org.opencv.core.Mat.n_Mat(Native Method)
at org.opencv.core.Mat.<init>(Mat.java:23)
at ddr.example.com.nddrandroidclient.widget.zoomview.ZoomImageView.init(ZoomImageView.java:67)
at ddr.example.com.nddrandroidclient.widget.zoomview.ZoomImageView.<init>(ZoomImageView.java:62)
... 40 more
产生原因:在自定义View初始化的时候调用了OpenCv里面的一个构造方法,而我加载OpenCv库的地方是在Activity的onResume()的方法下,这时候view先初始化但是OpenCv库尚未加载。
解决方法:
@Override
protected void onStart() {
if (!OpenCVLoader.initDebug()) {
Logger.d("Internal OpenCV library not found. Using OpenCV Manager for initialization");
OpenCVLoader.initAsync(OpenCVLoader.OPENCV_VERSION_3_1_0, this, mLoaderCallback);
} else {
Logger.d("OpenCV library found inside package. Using it!"+this.getClass().getName());
mLoaderCallback.onManagerConnected(LoaderCallbackInterface.SUCCESS);
}
super.onStart();
}
在onStart中加载OpenCv库。