# Python扫一扫二维码的两种方式详细说明

> 作者/来源: UCloud 运营管理员
> 发布时间: 2022-12-25T07:41:00.000Z
> 分类: 解决方案
> 标签: AI, Python
> 原文链接: http://117.50.162.249:3000/yun/articles/1905

---

# Python扫一扫二维码的两种方式详细说明

> 来源: https://www.ucloud.cn/yun/128802.html
> 作者: 89542767
> 发布日期: 发布于2022-12-25 15:41

在教学Python解决二维码图片的过程当中，大家看到基本上都是“用python形成霸气二维码图片”、“用Python制运作的图二维码图片”什么的文章内容。但是关于应用Python大批量扫一扫二维码的实例教程，实属罕见。文中就给大家归纳了Python扫一扫二维码的两种方式，有兴趣的话可以学习下

　　序言

　　近期在寻找材料时，发觉了一则10年前新闻报道：二维码图片将成为线上与线下重要通道。从目前的移动互联来说，付款收款二维码/防疫健康码这些和我们密切相关，二维码图片的确变成了生活当中必不可少的一部分。

![01.png](https://ucloud-blog.cn-bj.ufileos.com/articles/128802/images/128802_000.png)

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

　　pyzbar+PIL

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

![02.png](https://ucloud-blog.cn-bj.ufileos.com/articles/128802/images/128802_001.png)

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

　　输出：

![03.png](https://ucloud-blog.cn-bj.ufileos.com/articles/128802/images/128802_002.png)

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

　　cv2

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

　　注1：对于opencv模块，安装时需要输入pipinstallopencv-python，但在导入的时候采用importcv2。

　　注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)
```

　　输出：

![04.png](https://ucloud-blog.cn-bj.ufileos.com/articles/128802/images/128802_003.png)

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

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

![05.png](https://ucloud-blog.cn-bj.ufileos.com/articles/128802/images/128802_004.png)

　　综上所述，这篇文章就给大家介绍到这里了，希望可以给大家带来帮助