Android+openCV 的坑


之前一直用IntelliJ IDEA 導入 opencv_android_sdk 的 java 包,在最后一步finish時,始終出錯.

后來重新安裝Android Studio 重復以上步驟,能順利導入包 openCVLibrary320 (原因未知).

導入包后注意修改 sdk的 build.gradle 中的

android {
    compileSdkVersion 26 buildToolsVersion "26.0.2"

    defaultConfig {
        minSdkVersion 15 targetSdkVersion 26
    }
    ...
}

 與 app build.gradle 中的一致.

 

 

按照網上很多教程:

接着在 app/src/main 目錄下 創建一個jniLibs 目錄,然后把sdk/native/libs 下所有文件 拷貝到jniLibs下,編譯,運行。

這一步執行后運行程序會報錯,指向的目標大概都是 需要loadLibrary.

OK,我就加入了:

    // private static String strLibraryName = Core.NATIVE_LIBRARY_NAME;
    private static String strLibraryName = "opencv_java3"; // 不需要添加前綴 libopencv_java3

    static {
        try {
            Log.e("loadLibrary", strLibraryName);
            System.loadLibrary(strLibraryName);
        } catch (UnsatisfiedLinkError e) {
            Log.e("loadLibrary", "Native code library failed to load.\n" + e);
        } catch (Exception e) {
            Log.e("loadLibrary", "Exception: " + e);
        }
    }

還是報錯哦,找不到 libopencv_java3.so ,搞笑了,我就懷疑這個 libopencv_java3 路徑有問題或者根本沒有關聯到項目,因為教程中直接讓你把這個文件夾內容拷貝過來.

查資料 無果.

后來,把 jniLibs 目錄放到 src/main/ 目錄下 ,與Java 目錄同一級. 然后在app 的 build.gradle 中添加:

android {
    compileSdkVersion 26
    buildToolsVersion "26.0.2"
    defaultConfig {
        applicationId "com.***.opencvdemo2"
        minSdkVersion 15
        targetSdkVersion 26
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
        sourceSets { main { jniLibs.srcDirs = ['src/main/jniLibs'] } }
    }
    ...
}

這樣編譯就能順利通過.

 

最后:

其實根本不需要  jniLibs  這個目錄.我本來導入了opencv 的java 包.

所以,刪掉刪掉.根本不需要拷貝什么文件.導入包就可以了.后續的配置什么的都刪掉刪掉.

 

下一篇,將會記錄,Android + openCV 簡單的靜態圖片人臉檢測.

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM