『轉』 opencv3.3.0 && opencv_contrib3.3.0 for AndroidNDK

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

下載opencv Tag 3.3.0

下載opencv_contrib Tag 3.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目錄下。

如果實在搞不定,最后的靜態庫可以到這里下載。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容