• 首页 首页 icon
  • 工具库 工具库 icon
    • IP查询 IP查询 icon
  • 内容库 内容库 icon
    • 快讯库 快讯库 icon
    • 精品库 精品库 icon
    • 问答库 问答库 icon
  • 更多 更多 icon
    • 服务条款 服务条款 icon

Python识别二维码的两种方法

武飞扬头像
朱小五是凹凸君呀
帮助1

人生苦短,快学Python!大家好,我是朱小五

最近在搜寻资料时,发现了一则10年前的新闻:二维码将成线上线下关键入口。从今天的移动互联网来看,支付收款码/健康码等等与我们息息相关,二维码确实成为了我们生活中不可或缺的一部分。

学新通

在学习Python处理二维码的过程中,我们看到的大多是“用python生成酷炫二维码”、“用Python制作动图二维码”之类的文章。而关于使用Python批量识别二维码的教程,并不多见。所以今天我会给大家分享两种批量识别二维码的Python技巧!

学新通

pyzbar PIL

二维码又称二维条码,常见的二维码为QR Code,QR全称Quick Response,是一个移动设备上超流行的一种编码方式。

学新通

我们在之前的文章《轻松识别数百个快递单号》,Python的第三方模块pyzbar不仅可以识别一维条形码,也可以很方便地处理二维码的识别。

不过pyzbar库需要搭配PIL或者opencv使用,主要是为了利用Image.open()或者cv2.imread()来读取图片文件。

在交互式环境中输入如下命令:

from pyzbar.pyzbar import decode
from PIL import Image
decocdeQR = decode(Image.open("D:/test.jpg"))
print(decocdeQR[0].data.decode('ascii'))

输出:

学新通

这样就轻松实现了二维码的解析与识别。

cv2

另外,opencv模块其实自带二维码识别功能。

注1:对于opencv模块,安装时需要输入pip install opencv-python,但在导入的时候采用import cv2

注2:使用opencv模块时,文件路径、图片名称都不要包含中文,否则会报错。

在交互式环境中输入如下命令:

import cv2

qrcode_filename = "D:/test.jpg"
qrcode_image = cv2.imread(qrcode_filename)
qrCodeDetector = cv2.QRCodeDetector()
data, bbox, straight_qrcode = qrCodeDetector.detectAndDecode(qrcode_image)

print(data)

输出:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-OTEwtYct-1656490943906)(https://typora-1300769465.cos.ap-beijing.myqcloud.com/typora_zhuxiao5/image-20220530161115463.png)]

如上所示,我们同样实现了二维码的解析与识别。在上述代码中,第四行代码中qrCodeDetector.detectAndDecode(qrcode_image)有三个返回值。其中data是解码后的内容,如我们打印输出结果所示。

学新通

bbox是指二维码轮廓的四个角,从左上角顺时针转的。而straight_qrcode是二维码的原始排列,也就是每个点是0还是255的一个矩阵,白色是255,黑色是0。

感兴趣的同学可以详细了解更多的二维码的结构。


学新通

快学Python:自动化办公轻松实战》点击蓝字查看书籍详情,感谢支持

这篇好文章是转载于:学新通技术网

  • 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
  • 本站站名: 学新通技术网
  • 本文地址: /boutique/detail/tanhgfkiab
系列文章
更多 icon
同类精品
更多 icon
继续加载