Python识别二维码的两种方法详解
作者:朱小五 发布时间:2022-08-20 23:44:12
前言
最近在搜寻资料时,发现了一则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)
输出:
如上所示,我们同样实现了二维码的解析与识别。在上述代码中,第四行代码中qrCodeDetector.detectAndDecode(qrcode_image)
有三个返回值。其中data是解码后的内容,如我们打印输出结果所示。
▲二维码的结构
bbox是指二维码轮廓的四个角,从左上角顺时针转的。而straight_qrcode是二维码的原始排列,也就是每个点是0还是255的一个矩阵,白色是255,黑色是0。
来源:https://mp.weixin.qq.com/s/bzLmXFUcq55cXoI3hXUYhA
猜你喜欢
- 这篇文章主要介绍了如何基于Python制作有道翻译小工具,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的
- LCase:转成小写 UCase:转成大写 下面是ASP中的代码,可以直接演示效果的。 代码如下:<% dim s
- 试官: 听说你熟悉python,那么你能简单阐述一下python的装饰器、生成器以及迭代器么?我: emm, 我不清楚,我只是了解过pyth
- 1,jdk配置由于jdk官网的链接不直接支持wget,可以使用下面的方法下载jdk,其中jdk版本为jdk1.8.0_91:wget --n
- python获取当前运行函数名称的方法实例代码摘要: c/c++中获取函数所在源码名,函数名和行号的方法很简单 __FILE__,__FUN
- 最近因工作需要,要学习PHP的基础编程,于是学习架设PHP工作环境。但按照教材上介绍的那样,安装了WMAP后,一直无法运行成功。后发现Apa
- 函数 &n
- vscode来写python,配置灵活,界面美观,是个非常好的选择。我这里是在ubuntu系统下配置vscode的python3开发环境,当
- 求:机房、线上有多台主机,为了保障安全,需要定期修改密码。若手动修改,费时费力易出错。程序应该满足如下需求 :1、在现有的excel密码表格
- 发现问题在使用pip install下载其他包时,报了错,如图:提示:“You are using pip versio
- 安装官网下载http://ffmpeg.org/选择需要的版本在这个网址下载ffmpeg,https://github.com/BtbN/F
- JavaScript 没有一个权威的编码风格指南,取而代之的是一些流行的编码风格:Google的JavaScript风格指南(以下简称Goo
- 需求: 一台机器上有多个网卡, 如何访问指定的 URL 时使用指定的网卡发送数据呢?$ curl --interface eth0 www.
- 过期软件破解方法: 如果你看到了这篇博文,绝对保证不虚此行。仅仅5行脚本代码,即可破解99%的过期软件。 &
- 某些情况下:我们希望在一个SQL Server下访问另一个sqlserver数据库上的数据,或者访问其他oracle数据库上的数据,要想完成
- 以下为测试例子。 1.首先创建两张临时表并录入测试数据: 代码如下:create table #temptest1 ( id i
- 本文实例为大家分享了Python实现信息管理系统的具体代码,供大家参考,具体内容如下"""项目名称 =
- 本文实例讲述了JavaScript中变量、指针和引用功能与操作。分享给大家供大家参考,具体如下:1、变量我们可能产生这样一个疑问:编程语言中
- 最近因为要写一个项目的接口,需要远程的连接oracle数据库,刚开始的时候因为我本地只装了MySQL,所以用就连接了本地MySQL,接口大体
- 1. SQL Server导入导出向导,这种方式是最方便的.导入向导,微软提供了多种数据源驱动,包括SQL Server Native Cl