Android重新编译OpenCV+contrib4.3.0模块

最近在写游戏脚本时发现,很多找图找色方法不支持全分辨,于是想做一套基于opencv的全分辨率图色插件,可以支持多平台、多语言。首先要解决问题的是重新编译opencv+contrib。

折腾了半个月,终于在windows下成功为Android编译了Opencv + contrib模块。之前在网上查了很多材料,不是环境的问题就是配置的问题,总之都失败了。好在“久病成医”,经过千锤百炼摸索出了一套简单有效的编译方法。下面分享给大家:

环境准备

  • Windows操作系统
  • Android Studio 4.0
  • cmake 3.18
  • Mingw 0.6.2-beta​​​​​​

二、安装

1、首先,下载OpenCV 4.3.0 源码,根据需求再加上OpenCV_contrib 4.3.0 源码,解压放到你记得住的文件夹。

2、下载 cmake 3.18 安装包

3、下载 Mingw,选择下列需要安装的组件,右键选择 Mark for Installation,之后选择 Menu -> Installation -> Apply Changes

Android重新编译OpenCV+contrib4.3.0模块_第1张图片

不同版本的Mingw组件格式会不同,但差别不大,参照上图配置即可。 

安装完后把mingw加入系统环境变量(win键搜索环境变量就有,编辑完后重启系统生效)

Android重新编译OpenCV+contrib4.3.0模块_第2张图片

4、下载 Android NDK 和 SDK,可以直接在官网下,但这里推荐直接在 Android Studio 里安排。打开AS任意一个项目,在工具栏选择Tools -> SDK Maneger。然后,勾选右下角 Show Package Details,勾选一个NDK版本,Apply。

Android重新编译OpenCV+contrib4.3.0模块_第3张图片

SDK同理,安装完后打开 Project Structure -> SKD Location 找到SDK路径

Android重新编译OpenCV+contrib4.3.0模块_第4张图片 Android重新编译OpenCV+contrib4.3.0模块_第5张图片

同样要写到环境变量里,变量名ANDROID_SDK变值  C:\Users\huishi\AppData\Local\Android\Sdk

 5、安装 JDK,最低需要 8, 过高版本可能不兼容

同样需要配置环境变量

Android重新编译OpenCV+contrib4.3.0模块_第6张图片

​ 

三、编译配置 

 1、新建一个存放编译结果的文件夹,比如我就放在 G:\opencv\android_build,解压后源码放在 G:\opencv\source

运行 cmake-gui ,将源码和输出地址填入这里

Android重新编译OpenCV+contrib4.3.0模块_第7张图片

2、 

点击 Add Entry,添加以下几个属性

  • ANDROID_NDK 类型为PATH,填入你的NDK路径(AS下载的就在Sdk\ndk\21.2.6472646
  • ANDROID_SDK PATH,填入你的SDK路径
  • ANDROID_ABI STRING,设置平台,不填默认为 armeabi-v7a
  • ANDROID_NATIVE_API_LEVEL STRING,默认API为21
  • ANT_EXECUTABLE PATH,填入ANT路径下的bin(用于java 封装,便于 AS 导入module)
  • ANDROID_STL STRING,根据需求写入c++_staticc++_shared(默认是gnustl_static)

这时候你可以看到一片红,不用慌,这是代表新增,不是报错。我们点击下方的Configure。

Android重新编译OpenCV+contrib4.3.0模块_第8张图片

选择这个选项,Next,用你自己的ndk目录下的toolchain

Android重新编译OpenCV+contrib4.3.0模块_第9张图片​ 

 等待Configure完成,一切正常的话应该是这样

Android重新编译OpenCV+contrib4.3.0模块_第10张图片

现在可以添加opencv-contrib模块,搜索 extra,在 OPENCV_EXTRA_MODULES_PATH 添加路径 ....../opencv_contrib-4.3.0/modules。(需要重新添加NDK路径)

出现如下错误的话,找到下面文件拷贝到opencv-contrib/modules/xfeatures2d/src目录下

Android重新编译OpenCV+contrib4.3.0模块_第11张图片

 Android重新编译OpenCV+contrib4.3.0模块_第12张图片

3、参数调整

以下参数根据自己需求调整

  • BUILD_ANDROID_PROJECTS 不需要示例项目可直接取消勾选

  • BUILD_ANDROID_EXAMPLES = OFF

  • BUILD_PERF_TESTS = OFF

  • BUILD_TESTS = OFF

  • BUILD_opencv_world = OFF (生成 .so 库 libopencv_world.so,这是一个集合,不清楚和默认编译的 libopencv_java3.so 有什么区别,默认不开启,如果开启的话不会复制 java 层函数,也就是 cmake 的 gui 界面会显示 Java wrappers: NO)

  • BUILD_SHARED_LIBS = OFF (如果 On 则只编译 so 库)

  • WITH_CUDA = OFF (CUDA 是 NVidia 推出的并行计算架构,编译非安卓 SDK 时建议添加)

  • WITH_OPENCL = ON (因为我们编译的是 android sdk,所以建议添加移动端的并行架构支持)

  • WITH_OPENCL_SVM = ON (建议开启共享虚拟内存)

调整完后再次点击Configure,完成后点击Generate。

四、开始编译

在 buid 文件夹右键选择 Gitbash

输入命令 mingw32-make.exe

如果没有出现报错,则再输入 mingw32-make.exe install

Android重新编译OpenCV+contrib4.3.0模块_第13张图片

编译完成,打开AS的项目,在工具栏选择File -> New -> Import_Module

如何在Android Studio中使用链接so库或.a,后面会分享给大家。着急学习的小伙伴可以加入QQ群与群主交流。群号:741676897(全分辨率图色游戏脚本插件教学)

Android重新编译OpenCV+contrib4.3.0模块_第14张图片

你可能感兴趣的:(opencv,android)