需要下载android sdk,android NDK,Cmake,MinGW,ant,JDK
Sdk下载地址:https://www.cnblogs.com/ouyangping/p/6665108.html
NDK下载地址:https://www.jianshu.com/p/c5b59cbe65f7
2.开始编译
2.1、启动cmake gui,配置源代码目录和编译后存放目录,红色框内为源代码路径,也就是我们下载的opencv下sources的路径,绿色框内为我自己创建的存放编译后文件的路径。
2.2、然后点击add Entry增加变量ANDROID_ABI,这个是Android的平台版本;这个变量的类型是string ANDROID_ABI = armeabi
添加变量ANDROID_SDK,这个添加安装后的sdk的目录,ANDROID_SDK = C:\Microsoft\AndroidSDK\25,该变量的类型是path
添加变量ANDROID_NDK,这个是添加解压后NDK的目录,ANDROID_NDK = D:\android-ndk-r10d,该变量的类型是path
ANT_EXECUTABLE PATH,填入ANT路径下的bin(用于java 封装,便于 AS 导入module)
ANDROID_STL STRING,根据需求写入c++_static或c++_shared(默认是gnustl_static)
2.3、配置完就可以点击configure了,第一次会提示选择编译器,选择MinGW,并选择交叉编译的配置文件。
然后选择next,进行下一步。这里需要配置toolchain路径,注意了,不要用源码包里的toolchain,用你自己的ndk目录下的toolchain,不然可能导致一系列头文件丢失的错误,血的教训=_=。
然后点击Finish进行编译,这个编译过程会比较久,我是等了差不多一个小时才完成。
等到编译完成后如下所示,则表示编译完成。
如果这里java wrappers是NO的话,把world的项取消掉,OPENCV_ENABLE_ALLOCATOR_STATS=OFF把勾去掉。
然后勾选Java选项,在点击configure,等待完成后。等所有选项全变为白色后结束。
然后搜索OPENCV_EXTRA_MODULES_PATH把我们的opencv_contrib/modules的路径添加进去
然后点击Generate,等待完成,如下图表示结束。
3、使用mingw进行编译
接下来Ctrl+R,打开CMD,进入一开始选择的输出编译目录下
输入:mingw32-make,然后等待编译,这大概会持续半个小时......,在编译过程中会有杀毒软件弹出阻止操作,这个时候点击杀毒软件允许所有操作,等待编译结束。(注:编译时可能出现错误arm-linux-androideabi-gcc.exe找不到,你需要在自己ndk安装目录下查找这个可执行程序路径,然后把路径加入到系统环境变量path里,然后重新执行mingw32-make即可编译成功。)等跑到100%就完成了。
编译完之后,我们再输入:mingw32-make install,等待打包,这大概几分钟吧,
完成之后,我们就可以在这个目录下的install文件夹下拿到编译出来的东西了。
到这里,我们就是拿到了一个平台下的库文件,就是我们一开始设置的“armeabi”平台,一般你还需要新建一个输出目录,也就是下面那个目录,重复上面的步骤,编译出“arm64-v8”的版本
可以参考一下两篇博文:https://my.oschina.net/u/4361903/blog/4308583
https://blog.csdn.net/xiao19950820/article/details/77119891