资讯专栏INFORMATION COLUMN

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

89542767 / 990人阅读

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


  序言


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

01.png

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


  pyzbar+PIL


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

02.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

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


  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

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


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

05.png

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

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/128802.html

相关文章

  • 微信公众号 一扫

    使用 weixin-java-tools 完成公众端唤起微信扫一扫 如果没有引入相关的jar 可以查看之前的文章 点我 Java代码 使用 wxMpService 很方便获取一些微信需要的参数 @Autowired private WxMpService wxMpService; @GetMapping(path = scannerQrcode) public...

    msup 评论0 收藏0
  • HBuilder开发WAP2APP增加一扫功能

    摘要:需求明确开启常见的条码二维码及一维码的扫描识别功能,可调用设备的摄像头对条码图片扫描进行数据输入。通过可获取条码码管理对象。知识点明确模块提供开启摄像头扫描功能。载入中取消退出页面从相册选择二维码 需求明确 开启常见的条码(二维码及一维码)的扫描识别功能,可调用设备的摄像头对条码图片扫描进行数据输入。通过plus.barcode可获取条码码管理对象。 知识点明确 Barcode模块:p...

    _ipo 评论0 收藏0
  • HBuilder开发wpp2app增强性能之实现一扫

    摘要:需求明确开启常见的条码二维码及一维码的扫描识别功能,可调用设备的摄像头对条码图片扫描进行数据输入。通过可获取条码码管理对象。载入中取消退出页面从相册选择二维码 需求明确 开启常见的条码(二维码及一维码)的扫描识别功能,可调用设备的摄像头对条码图片扫描进行数据输入。通过plus.barcode可获取条码码管理对象。 实现步骤 创建条码扫描识别控件实例对象,涉及到Barcode模块,具体参...

    waltr 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<