找回密码
立即注册
搜索
热搜: Java Python Linux Go
发回帖 发新帖

2070

积分

0

好友

287

主题
发表于 5 天前 | 查看: 12| 回复: 0

WeChatQRCode 是一个基于 OpenCV 开源的微信二维码引擎(WeChat QR Code Detection & Decoding)移植并封装的 Android 二维码识别库。

该库作者还维护了另外两套扫码方案,供开发者按需选择:

  • ZXingLite:基于 ZXing 的扫码方案
  • MLKit:基于 ML Kit 的扫码方案
  • WeChatQRCode:基于 OpenCV 的扫码方案

各方案优劣互补,建议根据实际场景选用。

模块说明

模块名称 说明
app 示例 App,用于演示 WeChatQRCode 的识别与扫码效果
opencv 编译好的 OpenCV 基础库
opencv-armv7a armeabi-v7a 架构的 libopencv_java4.so
opencv-armv64 arm64-v8a 架构的 libopencv_java4.so
opencv-x86 x86 架构的 libopencv_java4.so
opencv-x86_64 x86_64 架构的 libopencv_java4.so
opencv-qrcode 封装 OpenCV 原生二维码识别 API,通过 OpenCVQRCodeDetector 调用
opencv-qrcode-scanning 基于 opencv-qrcode 的完整扫码界面实现,为 CameraScan 的衍生库
wechat-qrcode 封装微信开源二维码识别 API,通过 WeChatQRCodeDetector 调用
wechat-qrcode-scanning 基于 wechat-qrcode 的完整扫码界面实现,为 CameraScan 的衍生库

:Java 版本代码位于项目的 java 分支。

引入方式(Gradle)

1、添加仓库(Project 级 build.gradlesettings.gradle

repositories {
// ...
    mavenCentral()
}

2、添加依赖(Module 级 build.gradle

// OpenCV 基础库(必须)
implementation 'com.github.jenly1314.WeChatQRCode:opencv:2.4.0'

// ABI 支持(至少选一个)
implementation 'com.github.jenly1314.WeChatQRCode:opencv-armv7a:2.4.0'
implementation 'com.github.jenly1314.WeChatQRCode:opencv-armv64:2.4.0'
implementation 'com.github.jenly1314.WeChatQRCode:opencv-x86:2.4.0'
implementation 'com.github.jenly1314.WeChatQRCode:opencv-x86_64:2.4.0'

// OpenCV 二维码识别(可选)
implementation 'com.github.jenly1314.WeChatQRCode:opencv-qrcode:2.4.0'
// OpenCV 扫码界面(可选)
implementation 'com.github.jenly1314.WeChatQRCode:opencv-qrcode-scanning:2.4.0'

// 微信二维码识别(可选)
implementation 'com.github.jenly1314.WeChatQRCode:wechat-qrcode:2.4.0'
// 微信扫码界面(可选)
implementation 'com.github.jenly1314.WeChatQRCode:wechat-qrcode-scanning:2.4.0'

注意事项

1、SDK 版本要求

  • v2.1.x 及以上:compileSdkVersion >= 34
  • v2.0.x 及以上:compileSdkVersion >= 33
  • compileSdkVersion < 33,请使用 v1.x 版本

2、ABI 过滤(减小 APK 体积)

android.defaultConfig 中配置:

ndk {
    abiFilters 'armeabi-v7a' // 可按需添加 'arm64-v8a', 'x86', 'x86_64'
}

使用方法

1、初始化

// OpenCV 初始化(v2.1.0+)
OpenCV.initOpenCV();

// WeChatQRCodeDetector 初始化(需在 OpenCV 初始化之后)
WeChatQRCodeDetector.init(context);

2、识别二维码(WeChat 引擎)

// 仅获取内容
val results: List<String> = WeChatQRCodeDetector.detectAndDecode(bitmap)

// 同时获取内容和位置(四个角点)
val points = ArrayList<Mat>()
val result = WeChatQRCodeDetector.detectAndDecode(bitmap, points)
// points 中每个 Mat 包含 4 个点,格式:[x0,y0], [x1,y1], [x2,y2], [x3,y3]

3、识别二维码(OpenCV 原生引擎)

val detector = OpenCVQRCodeDetector()
val results = detector.detectAndDecode(bitmap)

val points = Mat()
val result = detector.detectAndDecode(bitmap, points)
// points 为 1×4 的 Mat,每列为一个点 (x, y)

4、快速实现扫码界面

继承 WeChatCameraScanActivity

class WeChatQRCodeActivity : WeChatCameraScanActivity() {
    override fun onScanResultCallback(result: AnalyzeResult<List<String>>) {
        // 处理识别结果
        val text = result.result[0]
        // 若需位置信息,判断 result 是否为 QRCodeAnalyzeResult 类型
    }

    override fun createAnalyzer(): Analyzer<MutableList<String>> {
        return WeChatScanningAnalyzer(true) // true 表示返回位置信息
    }
}

版本演进(2.x 主要变化)

  1. 移除对 mlkit-camera-core 的依赖
  2. 改为基于独立库 CameraScan 实现相机功能
  3. 默认集成 ViewfinderView(扫描框动画)
  4. WeChatCameraScanActivityOpenCVCameraScanActivity 内置手电筒按钮与默认 UI
  5. 包名结构调整,升级 1.x → 2.x 需注意 import 路径变更

完整使用方式请参考 CameraScanViewfinderView 的官方技术文档

核心类对照表

功能 子模块 Analyzer 实现 Activity/Fragment 基类
二维码扫码识别 wechat-qrcode-scanning WeChatScanningAnalyzer WeChatCameraScanActivity / WeChatCameraScanFragment
二维码扫码识别 opencv-qrcode-scanning OpenCVScanningAnalyzer OpenCVCameraScanActivity / OpenCVCameraScanFragment

体验与源码

演示 App:可直接下载体验识别效果(含 GIF 展示)

完整示例:见 app 模块中的 WeChatQRCodeActivityWeChatMultiQRCodeActivityOpenCVQRCodeActivity

项目效果

WeChatQRCode演示界面截图

项目源码

Giteehttps://gitee.com/jenly1314/WeChatQRCode

这是一个非常实用的 Android开发 工具库,尤其适合对二维码识别速度和精度有较高要求的场景。如果你正在寻找比传统 ZXing 方案更强大的替代品,不妨试试这个基于微信开源引擎的 开源项目。更多类似的技术实践和资源分享,欢迎访问 云栈社区 进行交流。




上一篇:BypassAV工具免杀实战:Patch白文件过360、火绒等主流杀软
下一篇:FakeSSH蜜罐部署实战:从攻击日志中“草船借箭”收集SSH密码字典
您需要登录后才可以回帖 登录 | 立即注册

手机版|小黑屋|网站地图|云栈社区 ( 苏ICP备2022046150号-2 )

GMT+8, 2026-1-10 09:17 , Processed in 0.344696 second(s), 39 queries , Gzip On.

Powered by Discuz! X3.5

© 2025-2025 云栈社区.

快速回复 返回顶部 返回列表