目录
本文完整代码下载(包括模型):https://download.csdn.net/download/qianbin3200896/90428635
一、概述
1.1 任务需求
最近接到一个需求,需要在服务器上部署二维码扫码服务,考虑到高精度和高效率需求,本文采用wechat_qrcode
库实现扫码解码功能。
1.2 wechat_qrcode介绍
wechat_qrcode
是 OpenCV 中用于二维码检测与解码的模块。它是 OpenCV 与微信合作开发的,集成到 OpenCV 库中,为开发者提供了方便、高效的二维码处理功能。
具体优势如下:
1. 高精度识别
复杂环境适应:wechat_qrcode 在各种复杂环境下都能保持较高的识别准确率。例如,对于有一定程度污损、模糊、光照不均的二维码图像,它依然能够准确地检测和解码。这得益于其采用的先进的深度学习模型,经过大量不同场景下的二维码图像数据训练,使得模型能够学习到二维码的特征和规律,从而在复杂情况下也能精准识别。
多角度识别:支持从不同角度对二维码进行识别。在实际应用中,用户扫描二维码时很难保证摄像头与二维码完全垂直,wechat_qrcode 可以处理倾斜角度较大的二维码图像,大大提高了扫码的便捷性和灵活性。
2. 快速解码速度
优化的算法架构:该库的算法架构经过精心设计和优化,能够快速处理图像数据。在处理高分辨率图像时,它采用了高效的图像金字塔和特征提取技术,减少了不必要的计算量,从而在短时间内完成二维码的检测和解码任务。
3. 模型小巧
资源占用少:wechat_qrcode 的预训练模型文件相对较小,对设备的存储和计算资源要求较低。这使得它可以在各种资源有限的设备上运行,如嵌入式设备、智能手机等。
4. 开源且易于集成
与 OpenCV 集成:作为 OpenCV 库的一部分,wechat_qrcode 可以方便地与其他 OpenCV 功能集成。
二、实现
2.1 下载模型
要使用 wechat_qrcode
,需要先下载相关的预训练模型文件(包括检测器和识别器模型),然后在代码中进行加载和初始化。
首先创建一个项目文件夹qrProject。在该文件夹下新建models文件夹,然后从wechat_qrcode官网把模型文件下载下来放置在models中即可。
官方网址如下:
https://github.com/WeChatCV/opencv_3rdparty/tree/wechat_qrcode
如果打不开上述网址,可以使用gitee上的网址。
如下图所示:
2.2 环境安装
pip install opencv-python opencv-contrib-python -i https://pypi.tuna.tsinghua.edu.cn/simple
本文安装的版本为4.11.0.86。
2.3 脚本测试
在项目根目录qrProject下放置一张测试图片,该图片包含二维码即可。
然后在根目录下新建一个脚本文件test.py,完整代码如下:
import cv2
# 加载 wechat_qrcode 检测器
detector = cv2.wechat_qrcode_WeChatQRCode(
"./models/detect.prototxt",
"./models/detect.caffemodel",
"./models/sr.prototxt",
"./models/sr.caffemodel"
)
# 读取图像
image = cv2.imread('image.png')
# 检测并解码二维码
res, points = detector.detectAndDecode(image)
# 输出解码结果
for r in res:
print(r)
运行上述脚本即可。