OpenCV Android so 編譯過程
資源準備
- 源碼下載
地址:https://github.com/opencv/opencv
- 擴展庫源碼下載
地址:https://github.com/opencv/opencv_contrib
以上資源本人都是下載的3.0版本,注意兩個資源庫版本要一致
以上兩個源碼庫下載之後並解壓
工具準備
- Android NDK下載
可以從官網下載,由於國內Android官網被斃,所以提供一個不需要翻牆也可以下載相關資源的網站:http://www.androiddevtools.cn/
選擇相應的NDK版本下載,本人選擇的是r11
- CMAKE下載
下載地址:https://cmake.org/download/
- MinGW下載
下載地址:https://sourceforge.net/projects/mingw/?source=typ_redirect
- IDE
Eclipse或者Android studio,
相關的安裝教程不在贅述,網上有很多
環境配置
- NDK 路徑配置
比如:
NDK_HOME爲D:\android-ndk-r11b-windows-x86_64\android-ndk-r11b
PATH中%NDK_HOME%;
- MinGW 路徑配置
比如:
MINGW_HOME爲D:\Mingw
Path中%MINGW_HOME%\bin;
編譯過程
1.打開CMAKE-GUI工具
- 第一步,選擇存放源文件的目錄,即解壓好的opencv源文件
- 第二步,選擇存放編譯後的文件目錄
- 第三步,爲了方便查看相應的選項,選中grouped,即以集合列表顯示
- 第四步,選中advanced
第五步,點擊ADD ENTRY
如圖設置ANDROID_NDK環境變量,並配置NDK目錄位置,點擊OK
- 點擊config,進行配置
- 選擇工程生成器爲MinGW Makefiles
- 選中指定跨平臺編譯的工具鏈文件
- 點擊next
- 指定工具鏈文件,比如D:/cv30/opencv-3.0.0/platforms/android/android.toolchain.cmake
- 點擊finish
- 等待配置完成之後,選擇查看ANDROID下的相應的選中條目是不是自己想要的
- 配置opencv extra modules路徑
再次點擊config,等待完成
完成之後,取消如下圖選中opencv_bioinspired
- 再次點擊config
- 完成之後,點擊generate
- 生成之後,開始進行MinGW操作
2.MinGW操作
- 進入到MinGW安裝目錄,依次進入msys==>>1.0,打開msys.bat
進入到CMAKE-GUI生成的路徑
命令行操作 mingw32-make
上一步執行完成後,繼續mingw32-make install
完成之後進入==>>install==>>sdk,native裏面就是編譯好的sdk了
3.IDE集成
- Eclipse中配置項目
按照上面兩張圖配置相關的項目庫環境
- Android studio中配置項目
複製編譯好的項目庫native包,到工程項目文件夾下
4.Android.mk文件和Application.mk文件配置
- Android.mk文件
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
#Copies necessary OpenCV dynamic libs to the project libs folder in order to include them into the APK.
OPENCV_INSTALL_MODULES:=on
#Skip native OpenCV camera related libs copying to the project libs folder.
OPENCV_CAMERA_MODULES:=off
#Perform static linking with OpenCV. By default dynamic link is used and the project JNI lib depends on libopencv_java.so.
OPENCV_LIB_TYPE:=STATIC
include D:\cvandroid\cvand\install\sdk\native\jni\OpenCV.mk
LOCAL_MODULE :=imgprocess
LOCAL_LDLIBS +=-llog
LOCAL_SRC_FILES := ImgProcess.cpp
##FILE_LIST := $(wildcard $(LOCAL_PATH)/../*.cpp)
##LOCAL_SRC_FILES += $(FILE_LIST:$(LOCAL_PATH)/%=%)
include $(BUILD_SHARED_LIBRARY)
- 1就是上面編譯好的sdk路徑裏面的opencv.mk
- 2就是自己編寫的代碼文件
- Application.mk文件
APP_STL := gnustl_static
APP_CPPFLAGS := -frtti -fexceptions
APP_ABI := armeabi-v7a
APP_PLATFORM :=android-19
- 完成配置