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版本。建议下载安装版,安装的时候有个选项可以自动配置环境变量的,如果没有选中的话就要自己去配置。

 

    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的路径,绿色框内为我自己创建的存放编译后文件的路径。

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

 

   

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

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要基于 AndroidOpenCV 4.0.1 和 OpenCV Contrib 4.0.1 进行编译,可以按照以下步骤进行: 1. 下载 OpenCV 4.0.1 和 OpenCV Contrib 4.0.1 的源代码: ``` git clone https://github.com/opencv/opencv.git cd opencv git checkout 4.0.1 cd .. git clone https://github.com/opencv/opencv_contrib.git cd opencv_contrib git checkout 4.0.1 ``` 2. 安装 Android NDK 和 Android SDK,并设置相应的环境变量。 3. 在 opencv 目录下创建一个 build 目录,并进入该目录: ``` mkdir build cd build ``` 4. 运行以下命令,生成 OpenCV Android 库: ``` cmake -DANDROID_ABI=armeabi-v7a \ -DANDROID_PLATFORM=android-21 \ -DANDROID_TOOLCHAIN=clang \ -DANDROID_STL=c++_static \ -DWITH_OPENCL=OFF \ -DWITH_IPP=OFF \ -DWITH_TBB=OFF \ -DWITH_MATLAB=OFF \ -DWITH_CUDA=OFF \ -DWITH_GTK=OFF \ -DBUILD_opencv_apps=OFF \ -DBUILD_ANDROID_EXAMPLES=OFF \ -DBUILD_ANDROID_PROJECTS=OFF \ -DBUILD_DOCS=OFF \ -DBUILD_EXAMPLES=OFF \ -DBUILD_PACKAGE=OFF \ -DBUILD_PERF_TESTS=OFF \ -DBUILD_TESTS=OFF \ -DOPENCV_EXTRA_MODULES_PATH=../../opencv_contrib/modules \ -DCMAKE_BUILD_TYPE=Release \ -DCMAKE_TOOLCHAIN_FILE=../../android.toolchain.cmake \ ../ ``` 其中,`ANDROID_ABI` 表示 Android 平台架构,这里设置为 `armeabi-v7a`,表示 ARMv7 架构;`ANDROID_PLATFORM` 表示 Android 平台版本,这里设置为 `android-21`;`ANDROID_TOOLCHAIN` 表示使用的工具链,这里设置为 `clang`;`ANDROID_STL` 表示使用的 C++ 标准库,这里设置为 `c++_static`,表示静态链接;`WITH_OPENCL`、`WITH_IPP`、`WITH_TBB`、`WITH_MATLAB`、`WITH_CUDA`、`WITH_GTK` 分别表示是否启用 OpenCL、IPP、TBB、MATLAB、CUDA、GTK 等功能,这里都设置为 `OFF`;`BUILD_opencv_apps`、`BUILD_ANDROID_EXAMPLES`、`BUILD_ANDROID_PROJECTS`、`BUILD_DOCS`、`BUILD_EXAMPLES`、`BUILD_PACKAGE`、`BUILD_PERF_TESTS`、`BUILD_TESTS` 分别表示是否编译 OpenCV 应用程序、Android 示例、Android 项目、文档、示例、打包、性能测试、测试,这里都设置为 `OFF`;`OPENCV_EXTRA_MODULES_PATH` 表示 OpenCV Contrib 目录的路径;`CMAKE_BUILD_TYPE` 表示编译类型,这里设置为 `Release`;`CMAKE_TOOLCHAIN_FILE` 表示使用的交叉编译工具链文件。 5. 运行以下命令,编译生成 OpenCV Android 库: ``` make -j4 ``` 其中,`-j4` 表示使用 4 个核心进行编译。 6. 在 build 目录下会生成一个 `sdk` 目录,其中包含编译好的 OpenCV Android 库。 可以将该库导入到 Android Studio 中,然后在项目中使用该库提供的函数进行开发。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值