人生苦短,快学Python!大家好,我是朱小五
最近在搜寻资料时,发现了一则10年前的新闻:二维码将成线上线下关键入口。从今天的移动互联网来看,支付收款码/健康码等等与我们息息相关,二维码确实成为了我们生活中不可或缺的一部分。
在学习Python处理二维码的过程中,我们看到的大多是“用python生成酷炫二维码”、“用Python制作动图二维码”之类的文章。而关于使用Python批量识别二维码的教程,并不多见。所以今天我会给大家分享两种批量识别二维码的Python技巧!
二维码又称二维条码,常见的二维码为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'))
输出:
这样就轻松实现了二维码的解析与识别。
另外,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。
感兴趣的同学可以详细了解更多的二维码的结构。
最近我花了两年写的新书已经上市,也算是我在CSDN博客分享Python知识3年的一个总结!
《快学Python:自动化办公轻松实战》点击蓝字查看书籍详情,感谢支持