Windows環境使用CMake編譯 opencv3.3.0 && opencv_contrib3.3.0 for AndroidNDK
轉載 Windows環境使用CMake編譯 opencv3.3.0 && opencv_contrib3.3.0 ??
AndroidNDK2017-09
opencv 從3.0.0開始不在提供合并的庫,而是將原先合并的庫分開為兩個庫,分別是:核心功能庫和拓展功能庫。而核心庫依然提供Android開發所需要的靜態庫支持,但是如果需要用到最近大紅大紫的人工智能相關功能,必然用到擴展功能庫提供的諸如人臉識別等功能,所以需要我們手動CMake生成Android所需要的靜態庫,這里主要講如何生成操作,生成我們需要的靜態庫。
這里順便吐槽一下,使用caffe框架搭建深度學習訓練人臉識別模型,要比opencv給出的人臉識別快很多,opencv-人臉識別還有很大的進步空間。不過遺憾的是caffe目前還沒有提供移動端的運行環境,即時PC訓練好了模型也沒有用武之地,頗感遺憾。
準備材料
opencv3.3.0 && opencv_contrib3.3.0
使用git clone或者直接下載壓縮包,這兩種姿勢都可以。
git clone https://github.com/opencv/opencv.git
git clone https://github.com/opencv/opencv_contrib.git
Cmake
下載Cmake工具,安裝即可。
MinGW
下載MinGW,安裝以后會有相應的g++配置,這一步需要自行勾選,然后下載對應的g++編譯包即可,配置完成MinGW大概在500MB左右。
需要配置path環境變量,在命令行中輸入gcc -v檢驗配置是否正確
Ant
下載Ant,無需安裝,解壓后,配置path環境變量即可,可以在命令行中輸入ant -v檢驗配置是否正確。
配置編譯環境
打開CMake GUI如下圖配置
上面一行地址是source所在目錄
下面一行地址是編譯文件將要放置的目錄
接下來需要配CMake的配置參數如下:
Name:ANDROID_ABI
Type:STRING
Value:armeabi-v7a
如圖所示:
如上,繼續添加:
Name:ANDROID_NDK
Type:Path
Value:H:/android-ndk-r14b
Name:ANDROID_OPENCL_SDK
Type:Path
Value:E:/android-sdk-windows
點擊Configure,進入設置編譯器階段,如圖
確定以后,配置cmake的起始路徑J:/opencv-source/opencv-3.3.0/platforms/android/android.toolchain.cmake
配置好以后,如圖所示:
配置運行一段時間以后,然后搜索OPENCV_EXTRA_MODULES_PATH,配置一下opencv_contrib/modules的路徑所在地。
配置完以后如下:
再點擊Generate,如圖所示。
開始編譯
進入到上面配置的編譯文件將要放置的目錄,進入命令行,輸入:
mingw32-make
如果一切順利話,大概30分鐘以后,會Build成功,接下來再輸入:
mingw32-make install
一般會順利的輸出生成的測試apk。
特殊情況
上面順利的話就不用往下看了,如果遇到報錯,一般是在編譯的時候出現找不到文件之類的奇怪問題。
而提示找不到的文件其實在我們本地的目錄.cache\xfeatures2d\boostdesc中,如下所示:
把上面的文件前綴統統去掉,copy到opencv_contrib-3.3.0\modules\xfeatures2d\src即可
參考:Error with "boostdesc_bgm.i" while compiling on Ubuntu 16.04
然后,如果提示還缺少文件,那么同樣的思路,到.cache\xfeatures2d\vgg目錄,把剩下的所有.i后綴文件統一copy到上面的目錄即可,如圖所示:
如果沒有這些文件,可以到這里下載。
最后,我們找一下生成的靜態鏈接庫,在J:\opencv-source\build\armeabi\lib\armeabi目錄下。
如果實在搞不定,最后的靜態庫可以到這里下載。