微信二维码识别引擎移植到Android平台
WechatQrcode Github 代码地址:
GitHub - MALTF/WechatQrcode: WeChatQrCode transplant to android platform.
编译环境:
- 系统:macOS Big Sur 11.2.3
- Java 1.8.0_152
- CMake 3.20.2
- GNU Make 3.81
- Apache Ant(TM) version 1.10.3
- opencv4.5.2
- opencv_contrib4.5.2
- Android SDK
- NDK
- Android Studio 4.2
Build #AI-202.7660.26.42.7322048, built on April 29, 2021
Runtime version: 11.0.8+10-b944.6916264 x86_64
VM: OpenJDK 64-Bit Server VM by N/A - 保持网络畅通,能科学上网最好,编译过程中,会下载一些额外的文件,如果下载失败,可能会产生错误和警告(对编译wechat_qrcode识别模块没啥影响)
开始编译:
1、下载文件opencv4.5.2、opencv_contrib4.5.2
2、打开CMake
- Browse Source目录:下载的opencv源码目录
- Browse Build目录:新建一个空文件夹用于存储编译后的文件
Add Entry操作:
- Name:ANDROID_NDK Type:PATH Value:NDK路径(最好填写sdk自带的ndk-bundle)
- Name:ANDROID_SDK Type:PATH Value:SDK路径
- Name:ANDROID_ABI Type: STRING Value: armeabi-v7a (每次都只能填一个,所以各个平台要分别编译)
- Name:ANDROID_NATIVE_API_LEVEL Type:STRING, Value:21 (默认API为21)
- Name:ANT_EXECUTABLE Type: PATH, Value:ANT路径下的bin(用于Java 封装,便于AS 导入Module)
- Name:ANDROID_STL Type:STRING Value: c++_static(根据需求写入c++_static或c++_shared,本次操作填入c++_static)
ANDROID_NDK、ANDROID_SDK
ANDROID_ABI Value:
armeabi
: 第5代、第6代的ARM处理器,早期的手机用的比较多,不再使用了。armeabi-v7a
: 第7代及以上的 ARM 处理器。2011至2015年发布的大多数安卓手机都在使用。arm64-v8a
: 第8代、64位ARM处理器,目前绝大部分设备都支持。x86
: 平板、模拟器用得比较多。x86_64
: 64位的平板。
Apache Ant(TM) version 版本查看:
ant -version
安装位置查看:
点击 ➕Add Entry
配置完参数后,点击Configure,首次会弹出窗口,标题为 Specify the generator for this project
选择 Unix Makefiles,单选 🔘Specify toolchain file for cross-compiling 然后点击Continue
会弹出Specify the Toolchain file窗口
选择对应NDK目录下的Toolchain路径,例如 ~/Android/sdk/ndk-bundle/build/cmake/android.toolchain.cmake,
点击Done之后,就自动开始编译,如果各项参数没有错误,会提示Configuring done.
添加<opencv_contrib>模块并调整参数
先搜索一下OPENCV_EXTRA_MODULES_PATH参数,如果已经存在就填入值,如果不存在就安装+Add Entry 添加这个参数和值(类型:PATH)
OPENCV_EXTRA_MODULES_PATH 下载opencv_contrib/modules路径
每次修改配置参数之后,尽量Generate一下比较好。
过程中会有下载一些文件,甚至报错,不用担心,等待进度条加载完成,如果是非wechat_qrcode模块报错的问题,对编译过程没有什么影响。
到这里就添加成功了。
- WITH_OPENCL=ON,支持移动端的并行架构
- WITH_OPENCL_SVM=ON,开启共享虚拟内存
2个参数直接在搜索框中搜索WITH_OPENCL出来后,勾选
再执行Configure和Generate,每次都要等进度条执行完成,不要着急,需要下载一些支持文件,执行完之后,再点Generate,如果没有报错的话,如下图所示,
Configuring done
Generating done
表示参数设置成功。
下面打开终端,进入opencv_build目录,
输入 make 回车,如果报错输入make install
到99%这个步骤就已经打包完成,module地址在~/opencv_build/opencv_android/opencv
Android Studio导入opencv_android 项目等待gradle执行完成后,就可以正常使用了,如果出现问题,再根据提示具体解决。
根据NDK版本不同,可能会出现各种c++异常问题,请自行根据错误信息具体解决!
效果参考Github WechatQrcode
完结!
Enjoy a cup of coffee,thanks!