OpenCV 集成遇到的问题
一.导入集成
官网下载android资源包含samples 和sdk
以sdk整体当做一个library导入到项目中
网上好多例子说以java文件夹当做一个library试了试会报错比较疑惑为什么这么说因为资源里面的samples也是以sdk整体最为library的
-
Package not found错误
原因 : 加载载libs失败导致的
-
创建Mat对象报错
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)
原因 : 因为的库还没有加载就调用了本地方法
解决方法 : 按照官方demo中的解决方法 在执行onResume()手动初始化含数库
@Override
public void onResume() { //进行手动初始化操作
super.onResume();
if (!OpenCVLoader.initDebug()) {
Log.e("TAG", "Internal OpenCV library not found. Using OpenCV Manager for initialization");
OpenCVLoader.initAsync(OpenCVLoader.OPENCV_VERSION_3_0_0, this, mLoaderCallback);
} else {
Log.e("TAG", "OpenCV library found inside package. Using it!");
mLoaderCallback.onManagerConnected(LoaderCallbackInterface.SUCCESS);
}
}
//初始化回调函数
private BaseLoaderCallback mLoaderCallback = new BaseLoaderCallback(this) {
@Override
public void onManagerConnected(int status) {
switch (status) {
case LoaderCallbackInterface.SUCCESS: {
Log.e("TAG", "OpenCV loaded successfully");
//-----------相关操作-----------
}
break;
default: {
super.onManagerConnected(status);
}
break;
}
}
};
项目搁置...