由于需要,要在android应用中使用OpenCV处理图像,于是查找下网络资料,发现网上说的很多并不理想,根据自己实践,总结下。
一、纯Native使用c++开发OpenCV的环境搭配
我使用的Android studio版本为4.1.3,在菜单Tools中的SDK Manager,选择adroid sdk ,右边选择SDK Tools,勾选下面的Show Package Details,加入NDK(Native开发必须),CMake,我的选择如下(版本选一个就行了,我的有几个):
至此,环境就已经搭配好了。
二、下载OpenCV的android SDK,下载地址:
三、建立项目
File--new Project ,选择最下面的Native C++,建立好项目后,自动有了Native支持,其中多了cpp目录,目录下还有native-lib.cpp C++源文件,CMakeLists.txt(CMake文件)。MainActivity类中有引入库的代码,此时直接运行,就能显示一个Hello world from c++,这个字符串就是从native-lib.cpp来的。
static {
System.loadLibrary("native-lib");
}
四、引入OpenCV库
这个时候已经完成了Native开发环境搭配,可以开始Native开发了,但是如何引入OpenCV呢?网上很多说要file--new--import module导入android sdk,其实这是使用java编写opencv才需要的,如果想纯native使用opencv开发,是不需要这步的。
1、解压下载的android sdk,把sdk--native--libs下面的四个文件夹复制到项目中,我是在src--main下面建立了一个jni目录,我把它们放jni目录下,这些是so文件,就是OpenCV库了。
2、引入头文件,把sdk--native--jni--include下的opencv2复制到cpp目录下。
OK,行了,但是android怎么知道你导入了这些呢?下面是配置。
3、告知android用到的库位置,在app的build.gradle,注意是app的那个,在android项中加入如下内容,src/main/jni就是我刚才建立的jni文件夹,里面放了so文件。
sourceSets{
main{
jniLibs.srcDirs=["src/main/jni"]
}
}
4、配置编译环境,打开CMakeLists.txt文件,加入下面内容。
<