首页 > 编程语言 >python 读取条形码以及二维码

python 读取条形码以及二维码

时间:2024-07-01 10:31:24浏览次数:3  
标签:条形码 img python barcode cv2 pyzbar 二维码 file data

#在AI运用中经常需要读取物体的条码信息,这一步在很多的场景应用中变得非常重要#

本文就来浅谈一下pyzbar的运用。

一、安装pyzbar的库:

pip install pyzbar -i https://pypi.tuna.tsinghua.edu.cn/simple

二、pyzbar库的介绍:

pyzbar库是一个基于Python的二维码生成和识别库,它提供了丰富的API和工具,方便用户快速实现二维码生成和识别功能。pyzbar库支持多种二维码格式,如QR Code、EAN-13等,并且可以在多种操作系统上运行。

三、生成条码:

要使用pyzbar生成二维码,需要使用pyzbar.pyzbar模块中的create_qrcode函数。该函数接受一个字符串参数,用于生成对应的二维码图片。下面是一个示例代码:

from pyzbar.pyzbar import create_qrcode  
# 要生成二维码的字符串  
data = "This is QR code!"  
# 生成二维码图片并保存到本地  
qrcode = create_qrcode(data, "D:\\log\\QRcode.png")
在上面的代码中,我们首先导入了create_qrcode函数,然后定义了一个要生成二维码的字符串。接着,我们调用create_qrcode函数将字符串转换为二维码图片,并将图片保存到本地D:\\log文件夹中为"QRcode.png"。

四、识别条码:

要使用pyzbar识别二维码,需要使用pyzbar.pyzbar模块中的decode函数。该函数接受一个图像参数,用于识别其中的所有码,并且用绿色框框框出来,然后重新保存图片。下面是一个示例代码:

def readBarcode_file(*kws):
    barcode_list.clear()
    filename=kws
    file=format(filename[0])
    img = cv2.imread(file)
    gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
    barcodes = pyzbar.decode(gray)

    for barcode in barcodes:
        barcode_data = barcode.data.decode("utf-8")
        barcode_list.append(barcode_data)
    print("readbarcode",barcode_list)
    for barcode in barcodes:
        # Get the barcode coordinates and draw a rectangle around it
        x, y, w, h = barcode.rect
        # print('x=', x, 'y=', y, 'w=', w, 'h=', h)
        cv2.rectangle(img, (x, y), (x + w, y + h), (0, 255, 0), 2)

        # Get the barcode type and data
        barcode_type = barcode.type
        barcode_data = barcode.data.decode("utf-8")
    img_resize= cv2.resize(img,(400,300))
    cv2.imwrite("re_capture.png", img_resize)
    return barcode_list

五、附上一个完整的代码:

import pyzbar.pyzbar as pyzbar
import cv2
barcode_list=[]
def readBarcode_file(*kws):
    barcode_list.clear()
    filename=kws
    file=format(filename[0])
    img = cv2.imread(file)
    gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
    barcodes = pyzbar.decode(gray)

    for barcode in barcodes:
        barcode_data = barcode.data.decode("utf-8")
        barcode_list.append(barcode_data)
    print("readbarcode31",barcode_list)
    for barcode in barcodes:
        # Get the barcode coordinates and draw a rectangle around it
        x, y, w, h = barcode.rect
        # print('x=', x, 'y=', y, 'w=', w, 'h=', h)
        cv2.rectangle(img, (x, y), (x + w, y + h), (0, 255, 0), 2)

        # Get the barcode type and data
        barcode_type = barcode.type
        barcode_data = barcode.data.decode("utf-8")
        # self.Text_Info(barcode_data)
        # value_list.append(barcode_data)
    img_resize= cv2.resize(img,(400,300))
    cv2.imwrite("re_capture.png", img_resize)
    return barcode_list
if __name__ == '__main__':
    file = "your path with file" # 改成你实际要读取的图片
    readBarcode_file(file)

本文使用环境为:Windows 10 ,python 3.10

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

标签:条形码,img,python,barcode,cv2,pyzbar,二维码,file,data
From: https://blog.csdn.net/baidu_24083705/article/details/140071180

相关文章

  • python异常、模块与包
    目录了解异常异常的捕获方法python模块python包安装第三方包了解异常什么是异常当检测到一个错误时,python解释器就无法继续执行了,反而出现了一些错误的提示,这就是所谓的“异常”,也就是我们常说的BUGbug单词的诞生早期计算机采用大量继电器工作,马克二型计算机就是......
  • 【python零基础入门到就业】002、2024最新windows环境下python的下载和安装
    文章目录1.引言2.检查是否已安装Python3.在Windows上安装Python3.1下载Python安装包3.2安装Python3.3验证安装4.结语1.引言在开始编写Python代码之前,我们首先需要在计算机上安装Python。本文将详细介绍如何在Windows系统上下载和安装Python。2......
  • Python离线下载并安装包及其依赖
    1,安装pipdeptree:PSD:\test>pipinstallpipdeptree2,假如想在内网安装flask,先在外网下载安装:PSD:\test>pipinstallflask3,使用pipdeptree查看并生成requirements.txtPSD:\test>pipdeptree-f-pflaskFlask==1.1.2click==7.1.2itsdangerous==1.1.0Jinja2==2.11.2......
  • [oeasy]python0023_[趣味拓展]Guido的简历_从ABC到python
    Guido的简历......
  • 详述Python环境下配置AI大模型Qwen-72B的步骤
    随着人工智能技术的发展,大规模预训练模型如Qwen-72B等逐渐成为研究和应用的重点。本篇博客旨在提供一份详细的指南,帮助Python开发者们在自己的环境中顺利配置并使用Qwen-72B大模型。请注意:由于Qwen-72B这一模型目前并未公开存在,所以以下内容仅为假设性描述,实际上你需要替换为......
  • 蓝桥杯python数组排序
    题目:资源限制内存限制:512.0MB C/C++时间限制:1.0s Java时间限制:3.0s Python时间限制:5.0s问题描述给定一个长度为n的数列,将这个数列按从小到大的顺序排列。1<=n<=200输入格式第一行为一个整数n。第二行包含n个整数,为待排序的数,每个整数的绝对值小于1......
  • python 无监督生成模型
    无监督生成模型在机器学习中扮演着重要角色,特别是当我们在没有标签数据的情况下想要生成新的样本或理解数据的内在结构时。一种流行的无监督生成模型是生成对抗网络(GenerativeAdversarialNetworks,GANs)。1.python无监督生成模型GANs由两部分组成:一个生成器(Generator)和一个......
  • 【Effective Python教程】(90个有效方法)笔记——第3章:函数——24:用None和docstring来描
    文章目录第3章:函数第24条用None和docstring来描述默认值会变的参数函数默认值的坑(函数的默认参数值只在定义函数时计算)解决方法:将函数默认参数值设为None,然后再在函数体中判断并初始化函数默认参数值设置为None的其他应用示例“函数默认参数值设置为None”与“函数参数......
  • 每日一题——Python实现PAT乙级1023 组个最小数(举一反三+思想解读+逐步优化)五千字好文
    一个认为一切根源都是“自己不够强”的INTJ个人主页:用哲学编程-CSDN博客专栏:每日一题——举一反三Python编程学习Python内置函数Python-3.12.0文档解读目录 我的写法(刚学Python时)代码点评时间复杂度分析空间复杂度分析总结我要更强优化建议优化后的代码时间复杂......
  • Python21 k-近邻算法
    k-近邻算法(k-NearestNeighbors,k-NN)是一种基本且广泛使用的分类与回归算法。它的工作原理非常直观:通过测量不同特征点之间的距离,来进行分类或回归分析。1.K-NN算法基本概念1.基于实例的学习:k-NN是一种基于实例的学习,意味着它直接记忆训练数据集,并通过这些数据进行预测,而......