windows下编译opencv+opencv_contrid的Android版本

  1. 编译环境配置

需要下载android sdk,android NDK,Cmake,MinGW,ant,JDK

    1. 下载Android sdk,在下载sdk时需要注意,使用sdk24之前版本,由于新版本Android sdk已经不支持通过android命令创建工程,因此在make到90%左右的时候会报错。需要换回旧版本,例如下载sdk版本21(测试过可用)。但通常下载下来的sdk只有tools目录。需要在Android Studio安装完Sdk后,将tools目录替换成21版本,再运行tools下的android命令测试一下(新版本的android命令会先输出一段信息,说明这个命令已经弃用)。

Sdk下载地址:https://www.cnblogs.com/ouyangping/p/6665108.html

    1. 下载NDK另外将NDK放在D:盘更目录下不要放在program file里面,由于编译过程中会去识别NDK目录,如果放在program file下由于目录中有空格会导致目录无法识别编译失败。

NDK下载地址:https://www.jianshu.com/p/c5b59cbe65f7

 

    1. 下载cmake: https://cmake.org/download/, 我使用的是cmake3.9.1版本。建议下载安装版,安装的时候有个选项可以自动配置环境变量的,如果没有选中的话就要自己去配置。windows下编译opencv+opencv_contrid的Android版本_第1张图片

 

    1. 下载MinGW,https://sourceforge.net/projects/mingw-w64/,下载好后解压,放在D盘,然后配置环境变量,在环境变量path中添加D:\MingW\bin.cmd输入gcc  -v检查是否安装配置成功。Mingw安装下载要成功,不然会影响后续编译。Mingw中的GCC要求版本在4.7以上,否则对部分特性不支持。
    2. 下载安装ant(编译java链接必须的),安装好还是要配置下环境变量。
    3. 下载opencv源码(这里需要用windows的源码,不能用Android的),http://opencv.org/
    4. 还要下载opencv_contrib的源码,https://github.com/opencv/opencv_contrib
    5. 下载安装python,一定要安装python,并配置环境变量,不然后面没法编出来libopencv_java4.so库。
    6. 安装jdk,并且版本必须大约8以上,并配置环境变量。

2.开始编译

2.1、启动cmake gui,配置源代码目录和编译后存放目录,红色框内为源代码路径,也就是我们下载的opencv下sources的路径,绿色框内为我自己创建的存放编译后文件的路径。

windows下编译opencv+opencv_contrid的Android版本_第2张图片

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++_staticc++_shared(默认是gnustl_static

 

windows下编译opencv+opencv_contrid的Android版本_第3张图片   

2.3、配置完就可以点击configure了,第一次会提示选择编译器,选择MinGW,并选择交叉编译的配置文件。

windows下编译opencv+opencv_contrid的Android版本_第4张图片

 

然后选择next,进行下一步。这里需要配置toolchain路径,注意了,不要用源码包里的toolchain,用你自己的ndk目录下的toolchain,不然可能导致一系列头文件丢失的错误,血的教训=_=

windows下编译opencv+opencv_contrid的Android版本_第5张图片

 

然后点击Finish进行编译,这个编译过程会比较久,我是等了差不多一个小时才完成。

等到编译完成后如下所示,则表示编译完成。

windows下编译opencv+opencv_contrid的Android版本_第6张图片

 

如果这里java wrappers是NO的话,把world的项取消掉,OPENCV_ENABLE_ALLOCATOR_STATS=OFF把勾去掉。

windows下编译opencv+opencv_contrid的Android版本_第7张图片

 

然后勾选Java选项,在点击configure,等待完成后。等所有选项全变为白色后结束

windows下编译opencv+opencv_contrid的Android版本_第8张图片

 

然后搜索OPENCV_EXTRA_MODULES_PATH把我们的opencv_contrib/modules的路径添加进去

windows下编译opencv+opencv_contrid的Android版本_第9张图片

 

然后点击Generate,等待完成,如下图表示结束。

 

3、使用mingw进行编译

接下来Ctrl+R,打开CMD,进入一开始选择的输出编译目录下

windows下编译opencv+opencv_contrid的Android版本_第10张图片

 

输入:mingw32-make,然后等待编译,这大概会持续半个小时......,在编译过程中会有杀毒软件弹出阻止操作,这个时候点击杀毒软件允许所有操作,等待编译结束。(注:编译时可能出现错误arm-linux-androideabi-gcc.exe找不到,你需要在自己ndk安装目录下查找这个可执行程序路径,然后把路径加入到系统环境变量path里,然后重新执行mingw32-make即可编译成功。)等跑到100%就完成了。

windows下编译opencv+opencv_contrid的Android版本_第11张图片

 

编译完之后,我们再输入:mingw32-make install,等待打包,这大概几分钟吧,

完成之后,我们就可以在这个目录下的install文件夹下拿到编译出来的东西了。

 

到这里,我们就是拿到了一个平台下的库文件,就是我们一开始设置的armeabi”平台,一般你还需要新建一个输出目录,也就是下面那个目录,重复上面的步骤,编译出arm64-v8”的版本

可以参考一下两篇博文:https://my.oschina.net/u/4361903/blog/4308583

https://blog.csdn.net/xiao19950820/article/details/77119891

你可能感兴趣的:(windows,图像识别,android,opencv)