官方的OpenCV是要配合OpenCVManager这个APK插件才能使用的,这样在做测试和代码调试没什么问题,但是要是用在产品上是很影响用户体验的。我也看了一些其它的博客。但是我明明照着那样改了,但是却没达到想要的效果,所已这里分享一下我的免安装OpenCV Manager经验。
首先去Opencv官网下载SDK
解压SDK,把横线目录下的文件复制到图中as的位置
再在app里的build.gradle设置如下
ndk {
abiFilters("armeabi", "armeabi-v7a", "x86", "mips")
}
sourceSets {
main {
jniLibs.srcDirs = ['src/main/jniLibs']
}
}
再到主页面配上
@Override
protected void onResume() {
super.onResume();
if(!OpenCVLoader.initDebug()){
Log.d(TAG,"Internal OpenCV library not found. Using OpenCV manger for initialization");
OpenCVLoader.initAsync(OpenCVLoader.OPENCV_VERSION_3_2_0,this,mLoaderCallback);
}else{
Log.d(TAG,"OpenCV library found inside package. Using it!");
mLoaderCallback.onManagerConnected(LoaderCallbackInterface.SUCCESS);
}
}
以上的操作很熟悉有没有,很多免安装OpenCV Manager的博客教程都是这样写的,但是你会发现。他们写到这里就没了,而你并没有实现你想要的效果,它还会提醒你安装APK。而且Log还会提示"OpenCV error: Cannot load info library for OpenCV"。这个问题就要从OpenCV SDK的源码找了。
我们可以看到它还要加载名为"opencv_info"的库,然后我们再打开新版OpenCv SDK库的目录:
可以看到,官方给的SDK里面是没有名为"opencv_info"的库的。所以我后来从旧版的OpenCV的SDK中找了一个,放到工程目录下,问题解决。
这两个文件都是非常重要的,有这两个库才能实现免安装OpenCV Manager。
这个是opencv_info的下载链接:https://download.csdn.net/download/wawayuchibang/10782701