終極篇延伸:在android native c++項目中直接內嵌opencv算法

這篇文章看題目讓人有點眼暈,且與之前的文章:終極篇 C++算法到安卓的移植——AS調用VS的so庫有類似的嫌疑

 

那麼這篇文章整理的目的是什麼呢?

  • 在安卓項目中以c++的方式調用opencv
  • 可以一次生成x86 x86_64 armeabi-7v armx64-v8a相關庫文件,不用根據平臺不同再特別設置opencv的配置,且只用設置一次(我在vs2019中就需要設置多次,四個平臺Release下就設置了4次)

 

所需軟件:android studio3.5(安裝好之後配置sdk,jdk,ndk)

opencv-android-sdk (opencv官網直接下載,解壓到固定路徑)

 

第一步:新建項目,選擇native c++

建好之後在/app/src/main/cpp文件夾下默認生成一個native-lib.cpp和CmakeList.txt

第二步:修改生成的so庫名稱

默認情況下生成的庫名稱爲native-lib.so

打開native-lib.cpp和CmakeList.txt 這兩個文件,將native-lib出現的地方全都修改爲想要生成的庫名稱,這裏我改爲textdetection-lib.so。(包括文件名稱都要改)

 

第三步:配置opencv,使得opencv可以在cpp文件中以c++的方式調用

1. 修改CmakeList.txt 文件

2. 修改app/build.gradle文件,配置opencv和平臺設置信息

3. 配置好後,需要將opencv-android-sdk中的文件夾sdk\native\libs下的所有文件拷貝到安卓項目的src/main/jinLibs文件夾下

 

第四步:修改textdetection-lib.cpp文件,以c++方式調用opencv

第五步: 顯示結果,修改MainActivity.java

第六步:編譯運行

編譯:菜單欄-- -Build ---- Build Boulds / APK ---- Build APK

分析APK:菜單欄-- -Build ---- Analyze APK,這時可以看到所有平臺的結果都顯示在內。

運行:菜單欄 ---- Run ---- Run app

我在調用dnn的readNet函數時目前有錯,運行時,去掉這一句即可,原因還未找到

錯誤提示是加載模型文件失敗,但是我在c++中可以直接這樣用,不知道原因是啥

 

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