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
- 完成配置