Android開發中通過純Java代碼使用OpenCV (mac+AndroidStudio+opencv320)

在網上關於android中如何使用opencv的教程還挺多的, 主要是有兩種
1.用JNI配合NDK,核心代碼用C++來完成,然後在Java中調用native的方法;
2.用純Java代碼開發OpenCV,使用OCV提供的SDK

第一種方法的優點是運行速度可能會更快,而且程序運行的時候可以直接一個安裝包跑起來,但是缺點在於環境配置比較麻煩,而且因爲把JNI的so文件都放到了應用程序裏,所以整體的包體非常大
第二種方法可以直接寫java代碼,開發速度快,而且包體非常小,但是運行需要依賴用戶安裝OpenCV Manager,可能速度會稍慢於第一種

我嘗試了第一種方法兩天都沒搞定, 所以採取了第二種方法;
首先是去opencv的官網下載android-sdk

剛開始我用的是opencv341, 這個版本的opencv的sdk好像有點問題, 建議換成320;

後面步驟網上教程很多,我大概記一下

新建好項目之後(這裏不需要勾選那個c++支持,因爲我們用的的純java的方式,所以也不需要下載ndk)

然後File -> New -> Import Module 然後選擇sdk的目錄/sdk/java, 像下面這樣, 注意這裏選擇好後, module的名字應該會自動生成爲openCVLibrary320

這裏可能你用的是android studio3.2以上的版本, 界面上稍有改動, 大家看一下是差不多的內容就可以了;

然後項目左上角選中這個Android視圖

然後右鍵選擇open module settings (mac 下快捷鍵command+;)
然後選到這個module dependency裏面, 添加openCVLibrary320, 把它依賴到app中;

這裏可能你用的是android studio3.2以上的版本, 界面上稍有改動, 可能找不到這個dependencies目錄, 看一下差不多的地方就行了, 主要就是在app這個module中使用opencvlibrary的module

到這裏爲止, 應該就能正常在app中使用opencv的庫了;

注意, 這裏經常有網上測試能否使用opencv的代碼是使用下面這種代碼來測試的

static {
    System.loadLibrary("native_lib");
}

但是這種代碼是用於在之前說的第一種方法裏, 它是回去項目中找一個叫nativelib的一個cpp文件, 然後進行鏈接, 但這不是我們採取的方法, 所以做到這裏, 上面的代碼是不能運行的;

但是正常使用OCV的一些sdk是沒有問題的, 比如新建一個Mat之類的操作~~

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