本文參考了官網(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é)果
