Python识别二维码的两种方法详解

作者:朱小五 时间:2022-08-20 23:44:12 

前言

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

Python识别二维码的两种方法详解

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

Python识别二维码的两种方法详解

pyzbar + PIL

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

Python识别二维码的两种方法详解

我们在之前的文章《轻松识别数百个快递单号》,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'))

输出:

Python识别二维码的两种方法详解

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

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)

输出:

Python识别二维码的两种方法详解

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

Python识别二维码的两种方法详解

▲二维码的结构

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

来源:https://mp.weixin.qq.com/s/bzLmXFUcq55cXoI3hXUYhA

标签:Python,识别,二维码
0
投稿

猜你喜欢

  • 一步步教你在Navicat上如何停止正在运行的MYSQL语句

    2024-01-21 06:17:01
  • 一空间多域名绑定不同目录方法

    2009-03-09 18:32:00
  • 基于PyTorch实现一个简单的CNN图像分类器

    2021-08-16 21:52:31
  • conda虚拟环境默认路径的修改方法

    2022-07-02 03:14:50
  • 如何使用索引提高查询速度

    2024-01-15 02:14:15
  • 基于Python利用Pygame实现翻转图像

    2021-05-20 00:05:08
  • 详解js加减乘除精确计算

    2024-04-18 10:47:10
  • 在pycharm中文件取消用 pytest模式打开的操作

    2022-06-20 18:16:19
  • mysql实现sequence功能的代码

    2024-01-27 14:30:20
  • SQL Server 数据库管理常用的SQL和T-SQL语句

    2024-01-27 01:10:53
  • vue.js编译时给生成的文件增加版本号

    2024-05-10 14:18:15
  • 详解python的webrtc库实现语音端点检测

    2023-07-20 01:44:11
  • 用注解编写创建表的SQL语句

    2024-01-14 01:51:11
  • SQL Server 自动化管理分区设计方案(图解)

    2011-07-21 17:25:04
  • Selenium常见异常解析及解决方案示范

    2023-06-27 20:09:48
  • Python 实现自动登录+点击+滑动验证功能

    2023-10-09 01:11:05
  • 一个滑动门菜单例子源码

    2007-12-31 10:16:00
  • linux系统oracle数据库出现ora12505问题的解决方法

    2024-01-27 09:06:15
  • Python设计模式之抽象工厂模式

    2021-02-06 09:18:59
  • python3连接mysql获取ansible动态inventory脚本

    2024-01-19 23:13:54
  • asp之家 网络编程 m.aspxhome.com