51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 643|回复: 0
打印 上一主题 下一主题

python二维码的使用,建议收藏!

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2022-12-15 16:21:37 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
二维码用某种特定的几何图形来记录数据符号信息,这些黑白相间的图形按照一定的规律分布在平面上(二维方向)。二维码是目前最常使用的快捷信息存储方式之一,微信等都可以通过这项技术实现快扫快

用。

  在本篇内容中,ShowMeAI带大家来学习二维码的应用技能,包括构建二维码和解码二维码。


  二维码历史

  QR(Quick Response,快速响应)Code 诞生于 1994 年的日本汽车公司 Denso Wave,是一种二维条形码,由在白色背景上排列成方形网格的黑色方块组成,允许立即访问隐藏在代码中的信息。

  QR码(也就是我们常说的二维码)可存储 7000 多个字符,由相机等设备读取,并从像素图像中解析出包含的信息,读取速度比其他条码快得多。


  二维码应用场景

  生成和读取二维码的简便性导致它们在零售店、银行、医院、旅游和食品服务行业的产品包装、非接触式商务、订单处理、结帐和支付服务中得到广泛采用。我们常用到通信软件、社交平台都几乎都可以


通过二维码来扫码识别。

  2020 年 9 月对美国和英国消费者进行的一项调查发现,在COVID-19大流行期间二维码的使用有所增加。




生成二维码
  我们先安装和导入本次需要用到的 Python 工具库qrcode,它可以很方便地创建和读取二维码。

  import qrcode

  创建数据。


  data="https://www.showmeai.tech"

  创建二维码实例。


 qr= qrcode.QRCode(version=1, box_size=10, border=4, error_correction=qrcode.constants.ERROR_CORRECT_H)


我们对参数做一个解释:

  ·version参数是一个从 1 到 40 的整数,控制二维码的大小;最小的是版本 1,它是一个 21x21 矩阵。

  · box_size参数控制二维码每个方框的像素数。

  · border控制框边框的粗细。

  · error_correction控制用于 QR 码的纠错,特别是当 QR 码因错误而无法读取时。选项 error_correction包括:

      · ERROR_CORRECT_L:可以纠正大约 7% 或更少的错误

      · ERROR_CORRECT_M(默认):可以纠正大约 15% 或更少的错误。

      · ERROR_CORRECT_Q:可以纠正大约 25% 或更少的错误。

      · ERROR_CORRECT_H:可以纠正大约 30% 或更少的错误。

  qr.add_data(data)

  qr.make(fit=True)


  最后,使用生成二维码make_image()将 QRCode 对象转换为图像文件并保存在文件中。

  qr_img=qr.make_image(fill_color="black", back_color="white")

  qr_img.save("qr.jpg")



  其中,fill_color和back_color可以改变二维码的背景和绘画颜色。

  阅读二维码
  本篇我们将讲解两种不同的方式来读取二维码,使用cv2和pyzbar。

  opencv 读取解码
  导入库。

  import cv2

  打开上方存储的qr.jpg图像文件。

  cv_img= cv2.imread("qr.jpg")


  在 CV2 中创建类 QRCodeDetector 的对象。

  qr_detect= cv2.QRCodeDetector()

  data, bbox, st_qrcode= qr_detect.detectAndDecode(cv_img)



  detectAndDecode()检测并解码图像中存在的二维码。该方法返回以下内容:

  ·解码后的数据,如果没有找到二维码,则数据为空。

  · 包含检测到的二维码顶点的边界框。

  · 可选的包含经过校正和二值化的 QR 码的输出图像。

  print(f"QRCode data:\n{data}")



我们对参数做一个解释:

  ·version参数是一个从 1 到 40 的整数,控制二维码的大小;最小的是版本 1,它是一个 21x21 矩阵。

  · box_size参数控制二维码每个方框的像素数。

  · border控制框边框的粗细。

  · error_correction控制用于 QR 码的纠错,特别是当 QR 码因错误而无法读取时。选项 error_correction包括:

      · ERROR_CORRECT_L:可以纠正大约 7% 或更少的错误

      · ERROR_CORRECT_M(默认):可以纠正大约 15% 或更少的错误。

      · ERROR_CORRECT_Q:可以纠正大约 25% 或更少的错误。

      · ERROR_CORRECT_H:可以纠正大约 30% 或更少的错误。

  qr.add_data(data)

  qr.make(fit=True)



  最后,使用生成二维码make_image()将 QRCode 对象转换为图像文件并保存在文件中。

  qr_img=qr.make_image(fill_color="black", back_color="white")

  qr_img.save("qr.jpg")


  其中,fill_color和back_color可以改变二维码的背景和绘画颜色。

  阅读二维码
  本篇我们将讲解两种不同的方式来读取二维码,使用cv2和pyzbar。

  opencv 读取解码
  导入库。

  import cv2


  打开上方存储的qr.jpg图像文件。

  cv_img= cv2.imread("qr.jpg")


  在 CV2 中创建类 QRCodeDetector 的对象。

  qr_detect= cv2.QRCodeDetector()

  data, bbox, st_qrcode= qr_detect.detectAndDecode(cv_img)



  detectAndDecode()检测并解码图像中存在的二维码。该方法返回以下内容:

  ·解码后的数据,如果没有找到二维码,则数据为空。

  · 包含检测到的二维码顶点的边界框。

  · 可选的包含经过校正和二值化的 QR 码的输出图像。

  print(f"QRCode data:\n{data}")









本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?(注-册)加入51Testing

x
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

本版积分规则

关闭

站长推荐上一条 /1 下一条

小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

GMT+8, 2024-11-19 02:35 , Processed in 0.063840 second(s), 24 queries .

Powered by Discuz! X3.2

© 2001-2024 Comsenz Inc.

快速回复 返回顶部 返回列表