openCV OpenCV Manager package was not found! Try to install it? 问题记录

首先说一点我用的是比较新的opencv版本。

版本信息

回到正题,为啥会出现这个问题呢,先看几段代码。

@Override
    protected void onResume() {
        super.onResume();
        if (!OpenCVLoader.initDebug()) {
            Log.d(TAG, "Internal OpenCV library not found. Using OpenCV Manager for initialization");
            OpenCVLoader.initAsync(OpenCVLoader.OPENCV_VERSION_3_0_0, this, mLoaderCallback);
        } else {
            Log.d(TAG, "OpenCV library found inside package. Using it!");
            mLoaderCallback.onManagerConnected(LoaderCallbackInterface.SUCCESS);
        }
    }

这个是例子中的代码,进入initDebug 方法,然后进入

StaticHelper.initOpenCV(false);

正常会有一个log输出 

First attempt to load libs fails  就是告诉我们 首次尝试加载libs失败 然后返回false.

所以我们会执行到这段代码

OpenCVLoader.initAsync(OpenCVLoader.OPENCV_VERSION_3_0_0, this, mLoaderCallback);

然后来到了 initOpenCV ----->  InstallService(AppContext, Callback);

好了,问题就是在这里暴露出来的,进入

getPackageName方法,会看到提示我们报错的dialog

这个就是提示错误弹出的地方,那为什么会出现呢,上面我们其实已经给出了答案: 首次尝试加载libs失败。

因为我之前有编译成功的,拷贝了一份就编译不成功了,感觉太奇怪了,我就把原来的apk拿来分析了一下,果然原来的包比现在包多了一个libs ,大小多出来近60mb ,其他的都一样。

可以正常使用的包:

 

报openCV OpenCV Manager  package was not found! Try to install it? 的包:

 

那么这个lib 是放在那里,又从那里来呢?

这个就在我们下载的opencv  sdk 里边,

这里我改了名字,原来名字就叫sdk ,我这里将我不需要的两个架构包删除了,把so 放进去就可以正常使用了。

当然,我这个是我自己在拷贝 opencv sdk 等操作过程中 将so 丢失才暴露出来的bug ,正常情况下应该不会出现这个问题,还有就是sdk 这个依赖库的名字尽量不要改,如果你改了你会发现使用官方给的几个事例时候有的ndk 会报错,找不到so 包,如果改了,那你就要修改相关配置的目录了。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章