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 包,如果改了,那你就要修改相關配置的目錄了。

 

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