Android openCV+ openCV-contrib 编译so文件

Android openCV+ openCV-contrib 编译so文件

    • 编译环境
    • 编译配置
      • 参考链接
      • 资源下载链接

微信扫码引擎是一款基于开源引擎ZXing,并高度优化和深度改造的高性能轻量二维码识别器。主要特点如下:

  • 基于CNN的二维码检测
  • 基于CNN的二维码增强
  • 更鲁棒的定位点检测

编译环境

  • Windows10
  • Android Studio
  • NDK 20.0.5594570
  • CMake 3.22.0-rc2
  • MinGW
  • JAVA 8
  • ANT 1.9.15
  1. 下载源码 :
    由于微信二维码引擎是新增功能,直接下master分支源码编译即可,尽量选择选择4.5.1以上的版本,低于4.5.1的版本没有wechat_qrcode(路径:opencv_contrib/modules/wechat_qrcode)文件,这里我选择的是4x分支,要保持openCV与opencv_contrib 版本一致。
    openCV源码:https://github.com/opencv/opencv
    opencv_contrib源码:https://github.com/opencv/opencv_contrib

  2. 安装CMake

  3. 安装MinGW:
    建议直接用Installer傻瓜式安装,选择下列需要安装的组件,右键选择Mark for Installation,之后选择Menu -> Installation -> Apply Changes。Android openCV+ openCV-contrib 编译so文件_第1张图片
    Android openCV+ openCV-contrib 编译so文件_第2张图片
    安装完后把mingw加入系统环境变量
    Android openCV+ openCV-contrib 编译so文件_第3张图片
    Android openCV+ openCV-contrib 编译so文件_第4张图片

  4. 配置JAVA环境

  5. 下载Android SDK、NDK并配置环境变量

  6. 下载apache-ant-1.10.12

编译配置

新建一个存放编译结果的文件夹,可以名为build。如我的源码和编译结果文件夹目录分别为:

opencv源码目录:D:\opencv\opencv-4.x

opencv_contrib源码目录:D:\opencv\opencv_contrib

build存放编译结果目录:D:\0opencv\build

  • 使用cmd 敲 cmake-gui 打开图形编译工具
    Android openCV+ openCV-contrib 编译so文件_第5张图片

  • 点击 Add Entry添加条目

  • ANDROID_NDK 类型为PATH,填入你的NDK路径

  • 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++_static或c++_shared(本次使用c++_shared)
    Android openCV+ openCV-contrib 编译so文件_第6张图片

  • 配置toolchain
    点击Configure,选择Specify toolchain file for cross-compiling,点击Next,选择对应NDK目录下的toolchain路径,点击Finish。
    Android openCV+ openCV-contrib 编译so文件_第7张图片
    Android openCV+ openCV-contrib 编译so文件_第8张图片

  • 执行Configure
    待Configure过程完成,若无异常,界面应与下面结果类似。(注意ndk中必须包含ndk\20.0.5594570\toolchains\llvm\prebuilt\windows-x86_64路径,否则可能会报错)
    Android openCV+ openCV-contrib 编译so文件_第9张图片

  • 调整参数
    OPENCV_EXTRA_MODULES_PATH,选择opencv_contrib/modules/wechat_qrcode路径

去除所有内容勾选(减少so体积,去除后(arm64-v8a)so仅有10M左右,不在意者可以跳过该步骤),保留以下内容勾选状态即可(必选内容)- BUILD_opencv_wechat_qrcode
 - BUILD_FAT_JAVA_LIB
 - BUILD_JAVA
 - BUILD_PROTOBUF
 - BUILD_opencv_core
 - BUILD_opencv_dnn
 - BUILD_opencv_imgproc
 - BUILD_opencv_java
 - BUILD_opencv_java_binds_generator
 - WITH_CPUFEATURES
 - WITH_PROTOBUF

WITH_OPENCL=ON,添加移动端的并行架构支持(可选)
WITH_OPENCL_SVM =ON,开启共享虚拟内存(可选)

7. 执行Configure和Generate
执行完成后会出现Configure done和Generate done 字样
9. 添加SDK和NDK
通过Android studio 打开opencv/build/opencv_android项目,在项目local.properties文件中添加SDK和NDK路径后进行同步项目(build目录是第一步自己建立的新的文件夹)
11. 执行编译
进入build目录(第一步自己建立的文件夹),进入Git Bash界面,执行mingw32-make.exe命令,(如果调整参数步骤删除了所有勾选,仅保留上述提供样式,执行命令可能会抛出Imgcodecs.imdecode找不到的异常,不用担心,这时候so文件已经编译出来了)如果没有出现报错,则再执行 mingw32-make.exe install
12. 编译结果
Android openCV+ openCV-contrib 编译so文件_第10张图片
红色箭头为我们所需要的内容,jni目录下有我们需要的libopencv_java4.so库,opencv_android目录下则是我们需要的opencv android依赖包(JNI native方法)和示例程序。

参考链接

全网首发微信二维码引擎Android平台移植

资源下载链接

编译好的so文件及JNI下载链接

你可能感兴趣的:(openCV,opencv,android,计算机视觉)