如何使用 Python 生成和读取条形码

发表于:2023-8-17 09:12

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:Linux迷    来源:Linux迷

  当您从商店购买商品时,您所购买的物品上的平行黑条纹,具有不同宽度,被称为条形码。条形码是一种将数据以视觉、机器可读的方式表示的方法。条形码被用于存储有关产品的信息,以便进行方便的识别和追踪。各个行业都使用条形码进行库存管理。
  使用Python,您可以生成条形码,扫描并读取条形码的内容。
  如何生成和自定义条形码 以下步骤展示了如何使用python-barcode库生成条形码。
  1、安装所需库
  打开您的终端或命令提示符,运行以下pip命令来安装所需的库。确保您的机器上已安装了pip。
  linuxmi@linuxmi ~/www.linuxmi.com
   % pip install python-barcode
  2、导入所需模块
  在您的脚本中,包含以下导入语句,以导入生成条形码所需的模块。
  import barcode
  from the barcode.writer import ImageWriter
  编写器负责在不同格式中生成和保存条形码图像。python-barcode 库提供了不同的条形码编写器。在这里,您将使用ImageWriter 类,该类将条形码渲染为图像。
  3、生成条形码的代码
  python-barcode库提供了各种条形码格式,例如Code39、Code128、EAN13和ISBN-10,用于生成条形码。
  def generate_barcode(data, barcode_format, options=None):
      # 获取与指定格式对应的条形码类
      barcode_class = barcode.get_barcode_class(barcode_format)
      # 使用提供的数据和格式创建条形码图像
      barcode_image = barcode_class(data, writer=ImageWriter())
      # 将条形码图像保存到名为"linuxmi"的文件中,带有指定的选项 
      barcode_image.save("linuxmi", options=options)
  generate_barcode函数根据给定的数据和格式(barcode_format)生成条形码,并将条形码图像保存到文件linuxmi.png中。文件扩展名取决于您使用的写入器类别。
  4、生成和自定义条形码
  要生成条形码,调用 generate_barcode 函数并传递所需的参数。
  generate_barcode("www.linuxmi.com", "code128")
生成的条形码
  编写器接受多个选项,使您能够自定义条形码。自定义选项包括修改条形码的大小、字体、颜色等。您可以参考python-barcode文档,以获得完整的常见编写器选项列表。
  generate_barcode("www.linuxmi.com", "code128", options={"foreground":"red", 
                                                    "center_text": False, 
                                                    "module_width":0.4, 
                                                    "module_height":20})
  在自定义选项中,您可以调整前景颜色、背景颜色,甚至可以选择是否在条形码上显示文本。
  如何扫描和解码条形码
  以下步骤介绍了如何使用Python的pyzbar库扫描和解码条形码。
  1、安装所需的库
  要扫描和解码条形码,您需要安装以下库:
  brew install zbar # Mac OS X
  sudo apt-get install libzbar0 # Linux OS
  pip install pyzbar opencv-python
  2、导入所需的模块
  安装完库后,在脚本中添加以下导入语句以导入必要的模块。
  import cv2
  from pyzbar import pyzbar
  3、从图像中扫描条形码
  从图像文件中扫描条形码的方法如下:
  使用OpenCV的imread函数加载图像。这将返回一个numpy.ndarray实例。
  将输出数组传递给pyzbar.decode以进行检测和解码。您还可以传递PIL.Image的实例。
  def scan_barcode_from_image(image_path):
      # 从提供的文件路径读取图像
      image = cv2.imread(image_path)
      # 使用pyzbar从图像中解码条形码
      barcodes = pyzbar.decode(image)
      # 遍历检测到的条形码并从中提取数据
      for barcode in barcodes:
          # 使用UTF-8编码
          barcode_data = barcode.data.decode("utf-8")
          barcode_type = barcode.type
          print("Barcode Data:", barcode_data)
          print("Barcode Type:", barcode_type)
  该函数接受image_path参数,读取图像,解码图像中存在的任何条形码,并打印每个检测到的条形码的解码数据和类型。
  scan_barcode_from_image("linuxmi.png")
  从网络摄像头流中扫描条形码
  您还可以借助Python OpenCV库从网络摄像头流中实时扫描和读取条形码。
  def scan_barcode_from_webcam():
      # 初始化默认网络摄像头 (index 0) 视频捕获
      video_capture = cv2.VideoCapture(0)
      while True:
          # 从网络摄像头流中获取一帧
          _, frame = video_capture.read()
          # 解码帧中的条形码
          barcodes = pyzbar.decode(frame)
          # 处理检测到的条形码
          for barcode in barcodes:
              # 提取条形码数据和类型并打印
              barcode_data = barcode.data.decode("utf-8")
              barcode_type = barcode.type
              print("Barcode Data:", barcode_data)
              print("Barcode Type:", barcode_type)
          # 检查退出条件:按下'q'退出循环
          if cv2.waitKey(1) & 0xFF == ord("q"):
              break
      # 释放视频捕获并关闭OpenCV窗口
      video_capture.release()
      cv2.destroyAllWindows()
  scan_barcode_from_webcam()
  scan_barcode_from_webcam函数连续捕获网络摄像头的帧,解码帧中存在的任何条形码,提取条形码的信息并打印出来。按键盘上的字母q键可以退出。
  通过Python生成和读取条形码和二维码
  使用Python,生成和读取条形码变得轻松高效。按照上述步骤,您可以生成各种适合您需求的条形码。
  QR码(Quick Response codes)是一种二维码,可以通过配备摄像头和QR码阅读器应用程序的智能手机、平板电脑或其他设备进行扫描和阅读。使用Python的qrcode库,您可以高效地生成、扫描和阅读QR码。
  本文内容不用于商业目的,如涉及知识产权问题,请权利人联系51Testing小编(021-64471599-8017),我们将立即处理
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号