OpenCV for Android(2):在Android中運行深度網(wǎng)絡(luò)MobileNet-SSD

本文參考了官網(wǎng)教程

下面是我自己的一點補充和經(jīng)驗,包括去除OpenCV Manager的操作和一些調(diào)試心得等。記錄在這里,以便以后參考:)

我的環(huán)境工具版本:

  • Android 3.0.1

  • OpenCV 3.4.1

準(zhǔn)備工作
  • 下載MobileNet目標(biāo)檢測模型,地址是這里
新建AndroidStudio項目
  • 新建項目 File - New – New Project,起個名字,然后按默認(rèn)的下一步,繼續(xù)。

  • 選擇Target Android Device,根據(jù)自己設(shè)備和對應(yīng)的SDK版本,進行選擇。

  • 選擇“Empty Activity”模板。按默認(rèn)設(shè)置,直到結(jié)束。

增加OpenCV依賴
  • 選擇File – New – Import module,然后選擇OpenCV SDK中的/SDK/java代碼的路徑,后面按照默認(rèn)設(shè)置,將OpenCV包引入到項目中。

  • File -> Project Structure,點左邊的“APP”,看右邊的選項卡,選“Dependencies”,點最右邊的綠色“+”號,選3 Module 的pendancy,選擇OpenCVLibary341。

修改一些參數(shù)
  • 打開兩個文件:

1.AndroidStudioProjects/opencv_mobilenet/app/build.gradle

2.AndroidStudioProjects/opencv_mobilenet/openCVLibrary330/build.gradle

修改(根據(jù)自己的測試手機參數(shù)來的):

compileSdkVersion 14 -> compileSdkVersion 25

buildToolsVersion "25.0.0" -> buildToolsVersion "25.0.1"

  • 找到gradle-wrapper.properties,最后一行最后一點改成gradle-4.1-all.zip

點錘子構(gòu)建項目,沒有錯誤就可以了。

編寫例子程序

代碼見本文開頭的那個官網(wǎng)教程

但是有個問題,那個例子用的是OpenCV Manager,實際使用的時候手機上會提示要安裝OpenCV Manager,而且我試過安裝并不會成功,因此參考了網(wǎng)上一些教程,去掉了OpenCV Manager的依賴。

去除OpenCV Manager的依賴的修改方法
  • 網(wǎng)上的方法說的有好幾種,各種復(fù)雜,我還沒有完全理解看懂。但是根據(jù)我自己的經(jīng)驗,以下步驟是可行的:

1.找到OpenCV SDK里面的libs路徑,我的是:

D:\AndroidSDK\OpenCV-android-sdk\sdk\native,拷貝整個libs文件夾,到

D:\ASOpencvSampleProject\opencv_mobilenet\app\src\main這下面,并且,文件夾改個名字,libs改成jniLibs

2. 找到app的build.gradle,在android節(jié)點下面加入:


sourceSets {
 main {
 jniLibs.srcDirs = ['src/main/jniLibs']
 }
}

3.找到MainActivity.java,里面的onResume()函數(shù),在else大括號里面加一句代碼,變成如下:


else {
 Log.d(TAG, "OpenCV library found inside package. Using it!");
 System.loadLibrary("opencv_java3");//加這一句 mLoaderCallback.onManagerConnected(LoaderCallbackInterface.SUCCESS);
}

運行例子
  • 先把之前下載好的MobileNetSSD_deploy.prototxt 和 MobileNetSSD_deploy.caffemodel 文件放到 app/build/intermediates/assets/debug 文件夾里面.

  • 點綠錘子圖標(biāo)構(gòu)建項目。

  • 連接手機,點綠三角開始運行

運行中的一點經(jīng)驗總結(jié)
  • 手機要打開“開發(fā)者模式”,允許usb調(diào)試,允許usb安裝。

  • 小米手機要關(guān)掉“啟動MIUI優(yōu)化”,這個在開發(fā)者選項頁面的最底下,如果不關(guān)掉,很可能是要閃退的。

  • 運行時如果提示相機需要權(quán)限,那是個好消息,說明沒什么問題,只要到應(yīng)用權(quán)限管理里面的去打開這個程序的相機權(quán)限就可以了。

出過的錯
  • 新建項目報錯。 這時一般是SDK版本有問題,我遇到過。
    解決辦法:
    App—project structure- 各選項卡下各種version 都改成25
    implementation 'com.android.support:appcompat-v7:25.1.0'也改成25,通過。

  • 閃退

    1. 可能是小米手機要關(guān)掉“啟動MIUI優(yōu)化”,見上文。

    2. 提示Library錯誤。檢查System.loadLibrary("opencv_java3");是否寫對,我曾經(jīng)寫成System.loadLibrary("libopencv_java3");這樣是錯誤的。會提示找不到liblibopencv_java3.so,這個名字就重復(fù)了。

    3.提示Readprotofromtextfile相關(guān)錯誤。
    解決辦法,檢查app/build/intermediates/assets/debug 文件夾里面是否有文件,有的話也可能是文件異常,重新下載MobileNetSSD_deploy.prototxt 和 MobileNetSSD_deploy.caffemodel 文件放進去就好了。

  • 相機畫面是逆時針旋轉(zhuǎn)了90度
    解決辦法:豎屏情況下我也沒找到簡便的修改方法,但是橫屏解決了,就在手機設(shè)置--方向鎖定—不要選 然后手機橫屏之后,就可以得到全屏且正確的畫面了。

  • 之前有評論說找不到“l(fā)ibopencv_java3.so”。
    解決辦法:參考上文“去除OpenCV Manager的依賴的修改方法”中的修改辦法,讓程序找到“l(fā)ibopencv_java3.so”這個文件。

運行結(jié)果
1925753715.jpg
更新一下
  • 有朋友說鏈接打不開,那再發(fā)一遍,參考:
  • 官網(wǎng)教程
  • MobileNet-SSD的下載地址
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容