条形码和二维码
创始人
2025-05-29 01:40:53
0

前言:需要的包的相关文档

1. Barcode:https://pypi.org/project/python-barcode/0.8.1/

2. Qrcode:https://pypi.org/project/qrcode/

3. Zbar: https://pypi.org/project/pyzbar/

4. Opencv: https://docs.opencv.org/3.4.11/

5. OpenCV: https://blog.csdn.net/JsonD/article/details/84983702

本次用python实现条形码和二维码的制作,同时也对最近学习的总价

Barcode库

制作ean13码

导包

import barcode
from barcode.writer import ImageWriter

 这里要注意的是下载的包方式是

pip install python-barcode包

否则from barcode.writer import ImageWriter无法正常使用

指明类型

EAN=barcode.get_barcode_class('ean13')

写入内容

ean = EAN(u'4260165185431',writer=ImageWriter())

保存

ean.save('ean13')

完整代码

import barcode
from barcode.writer import ImageWriter
EAN=barcode.get_barcode_class('ean13')
ean = EAN(u'4260165185431',writer=ImageWriter())
ean.save('ean13')

 code39码制作

方法跟上述的ean13码制作方式类同,只需改变类型指向为code39

完整代码

import barcode
from barcode.writer import ImageWriter
EAN=barcode.get_barcode_class('code39')
ean = EAN(u'4260165185431',writer=ImageWriter())
ean.save('code39')

Numpy库与cv2库 

现在我们提出一个需求就是不借助 Barcode库也能实现,加密ean13码的制作

我们老师的要求是:仅使用opencv库和numpy库,在给定EAN-13码中国家代码、厂商代码、产品代码后,自动生成EAN-13码的数字内容和对应的条码图片。其中设置图片大小为565*400,条形码每个编码单元宽度5像素,短条长度为346像素,长条长度为371像素。

思路:通过枚举的方式制作

#!/usr/bin/env python
# -- coding: utf-8 --
# @Time : 2023/3/12 12:12
# @File : ean-13.py
import cv2
import numpy as npdef generate_ean13_code(country_code, manufacturer_code, product_code):# 计算校验码ean13_code = country_code + manufacturer_code + product_codecheck_code =str((10 - (3*int(ean13_code[0])+int(ean13_code[1])+3*int(ean13_code[2])+int(ean13_code[3])+3*int(ean13_code[4])+int(ean13_code[5])+3*int(ean13_code[6])+int(ean13_code[7])+3*int(ean13_code[8])+int(ean13_code[9])+3*int(ean13_code[10])+int(ean13_code[11])) % 10))ean13_code += check_code# 生成数字内容图像num_image = np.ones((50, 565, 3), dtype=np.uint8) * 255cv2.putText(num_image, ean13_code, (20, 40), cv2.FONT_HERSHEY_SIMPLEX, 1, (0, 0, 0), 2, cv2.LINE_AA)# 生成条形码图像code_image = np.ones((346, 565, 3), dtype=np.uint8) * 255# 生成左侧6个数字的条形码for i in range(6):binary_code = '{0:07b}'.format(int(ean13_code[i]))for j, bit in enumerate(binary_code):if bit == '1':cv2.rectangle(code_image, (5+(j+i*7)*5, 0), (5+(j+i*7)*5+5, 346), (0, 0, 0), -1)# 中间加入间隔线cv2.rectangle(code_image, (35*5, 0), (35*5+5, 346), (255, 255, 255), -1)# 生成右侧6个数字的条形码for i in range(6, 12):binary_code = '{0:07b}'.format(int(ean13_code[i]))for j, bit in enumerate(binary_code):if bit == '1':cv2.rectangle(code_image, (40+(j+(i-6)*7)*5, 0), (40+(j+(i-6)*7)*5+5, 346), (0, 0, 0), -1)# 合并数字内容和条形码图像code_image = np.concatenate((code_image,num_image), axis=0)return ean13_code, code_image# 示例调用
code, image = generate_ean13_code('123', '4567', '7654321')
cv2.imshow('EAN-13 Code: {}'.format(code), image)
cv2.waitKey(0)
cv2.imwrite('me.png',image)
cv2.destroyAllWindows()

存在bug,应该是生成130多个小方块。进优势,后面在调试

CV2

这里我们运用到用于计算的numpy库和图片处理的CV2库,numpy库我们之前用过,那么cv2库呢。python版OpenCV常用api调用 (这一版很全)_opencv python api_黑暗骑士V的博客-CSDN博客

知道了使用的方法,我们再做一个案例 

现在这个效果,这个我们就要计算了

import numpy as np
import cv2img=np.zeros((200,400,3),np.uint8)
# 最后以为0 代表的是蓝通道 1代表的是绿通道 2代表红通道
img[0:100,0:200,0]=255
# 第一个参数是高度 第二个是宽度
img[100:200,0:200,1]=255
# 灰
img[0:100,200:400,0]=128
img[0:100,200:400,1]=128
img[0:100,200:400,2]=128img[100:200,200:400,2]=255cv2.imshow('color',img)
cv2.waitKey(0)

 这个img[0:100,0:200,0]==img[高度,宽度,通过值]

0 代表的是蓝通道 1代表的是绿通道 2代表红通道

Qrcode

qrcode库主要是用来做二维码的库,像我以前用Java写一个二维码,要几百行才能实现,这个就几步实现了

 现在给一个需求,我要一个链接到百度的二维码,而且二维码的前景色为蓝色

#!/usr/bin/env python
# -- coding: utf-8 --
# @Time : 2023/3/14 14:30
# @File : Qrcode.py
import qrcode
# 二维码内容
content = 'http://www.baidu.com/'
# 二维码配置
qr3 = qrcode.QRCode(version=10,error_correction=qrcode.constants.ERROR_CORRECT_Q,box_size=5,border=6,
)
# 添加数据
qr3.add_data(content)
# 转存写入
qr3.make(fit=True)
# 图片样式
img3 = qr3.make_image(fill_color="#00BFFF", back_color="#FFFFFF")
# 保存图片
img3.save('qr3.png')

 Zbar库

 这里要注意的zbar库已经弃用了现在用pyzbar库

这是一个解码库,我们解之前bacode库生成的39码内容

#!/usr/bin/env python
# -- coding: utf-8 --
# @Time : 2023/3/14 14:39
# @File : Pyzbar.py
import cv2
from pyzbar import pyzbar
# 读图片
img = cv2.imread('code39.png')
# 解码条码
decoded_objects = pyzbar.decode(img)
# 打印解码结果
for obj in decoded_objects:print('Type:', obj.type)print('Data:', obj.data.decode())

相关内容

热门资讯

生产年终总结 生产年终总结三篇  总结是对过去一定时期的工作、学习或思想情况进行回顾、分析,并做出客观评价的书面材...
食品安全责任管理制度 食品安全责任管理制度(精选11篇)  在充满活力,日益开放的今天,我们都跟制度有着直接或间接的联系,...
值班管理制度 值班管理制度(精选9篇)  在日新月异的现代社会中,很多场合都离不了制度,制度是国家机关、社会团体、...
英语作为国际语背景下的语言学... 英语作为国际通用语背景下的语言学习观新探  摘要:随着全球化进程的加快,英语的普及范围越来越广,英语...
工程项目部内部管理规章制度 工程项目部内部管理规章制度(精选10篇)  在不断进步的社会中,制度在生活中的使用越来越广泛,制度就...
环境友好磷化镍催化剂的HDN... 环境友好磷化镍催化剂的HDN 性能研究论文  1 实验部分  1.1 实验药品  随着人们环保意识的...
机械臂毕业论文 机械臂毕业论文  机械臂作为迄今为止人工智能程度最高的科技产品代表,其应用已经涉及制造业、医疗、农业...
最新医院成本核算的具体实施论... 最新医院成本核算的具体实施论文  医院的成本是指医院在开展医疗服务过程中发生的各种消耗。医院成本核算...
的中国能源战略 2020年的中国能源战略讨论中国中长期的能源发展战略问题,要从我国的能源需求、能源发展的态势来谈起....
生态文明建设的贵阳话题 生态文明建设的贵阳话题贵阳在建设生态文明城前道路上不断加速. 2009年6月,贵阳正式成为国家环保部...
高频开关电源的并联均流系统 高频开关电源的并联均流系统  在学习和工作中,大家都经常接触到论文吧,论文是讨论某种问题或研究某种问...
挣脱抑郁症恶魔 挣脱抑郁症恶魔10年前的一天,我只因和同事吵了两句嘴,回到办公室后,就突然觉得心跳得特别剧烈,使人慌...
鸡球虫病的防治 鸡球虫病的防治鸡球虫病是由艾美耳球虫寄生在鸡肠道上皮细胞所引起的一种寄生虫病,在集约化鸡场特别是地面...
担当的议论文 担当的议论文800字(通用10篇)  担当,是接受并负起责任。我们都必须做一个有担当的人。只有这样,...
接触网避雷器性能在线监测系统... 接触网避雷器性能在线监测系统的研究与设计论文  0 引言  在高速铁路发达的欧洲中部地区,每 100...
空调房节能智能化控制系统 空调房节能智能化控制系统摘要:技术领域 本发明涉及家庭空调节电的控制装置,具体是空调房节能智能化控制...
保险毕业论文的提纲 保险毕业论文的提纲范文  养老保险是社会保障体系建设的一项重要内容,当前,机关事业单位养老保险与企业...
刍议科技馆与科技教育 刍议科技馆与科技教育科技馆是通过能够引起感官情绪和理智兴趣的展览、参与、互动等活动解释科学与技术的发...
职业教育应注重培养学生发展的... 职业教育应注重培养学生发展的核心素养论文  培养学生发展的核心素养,是我国教育改革与发展的突破口和落...
用爱的智慧关爱留守儿童论文 用爱的智慧关爱留守儿童论文  随着我国经济的飞速发展,大量的农民工来到城市中,成为城市中不可缺少的一...