条形码和二维码
前言:需要的包的相关文档
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())

相关文章:
条形码和二维码
前言:需要的包的相关文档 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. OpenC…...
大数据-学习实践-5企业级解决方案
大数据-学习实践-5企业级解决方案 (大数据系列) 文章目录大数据-学习实践-5企业级解决方案1知识点2具体内容2.1小文件问题2.1.1 SequenceFile2.1.2 MapFile2.1.3 小文件存储计算2.2数据倾斜2.3 YARN2.3.1 YARN架构2.3.2 YARN调度器2.3.2 YARN多资源队列配置和使用2.4Hadoop官方…...
破解吲哚花菁素IR-808 N3,IR-808 azide,IR-808叠氮,酯溶性染料修饰叠氮基团,相关知识
基础产品数据(Basic Product Data):CAS号:N/A中文名:IR-808叠氮英文名:IR-808 N3,IR-808 azideIR-808结构式(Structural):详细产品数据(Detailed …...
面试官:MQ的好处到底有哪些?
💗推荐阅读文章💗 🌸JavaSE系列🌸👉1️⃣《JavaSE系列教程》🌺MySQL系列🌺👉2️⃣《MySQL系列教程》🍀JavaWeb系列🍀👉3️⃣《JavaWeb系列教程》…...
事务机制:Redis能实现ACID属性吗?
ACID特性无需多言。我们知道关系数据库比如mysql可以实现事务的ACID特性,begin,commit,回滚实现。 那么redis可以实现ACID吗,结论是不能完全保证。 首先要知道redis通过MULTI关键字开启事务,中间一系列操作,加到操作队列中并不执…...
如何在 Apinto 实现 HTTP 与 gRPC 的协议转换(上)
什么是 gRPC 像 gRPC 是由 google 开发的一个高性能、通用的开源 RPC 框架,主要面向移动应用开发且基于 HTTP/2 协议标准而设计,同时支持大多数流行的编程语言。 gRPC 基于 HTTP/2 协议传输,而 HTTP/2 相比 HTTP1.x ,有以下优势:…...
3分钟看完-丄-Python自动化测试【项目实战解析】经验分享
目录:导读 引言 自动化测试 背景 测试团队 测试体系发展 测试平台 自动化测试现状 现状一: 现状二: 现状三: 现状四: 现状五: 现状六: 失败的背景 失败的经历 失败总结 引言 内…...
Web漏洞-命令执行和代码执行漏洞
命令执行原理就是指用户通过浏览器或其他辅助程序提交执行命令,由于服务器端没有针对执行函数做过滤,导致在没有指定绝对路径的情况下就执行命令。漏洞成因它所执行的命令会继承WebServer的权限,也就是说可以任意读取、修改、执行Web目录下的…...
Towards Unsupervised Text Classification Leveraging Experts and Word Embeddings
Towards Unsupervised Text Classification Leveraging Experts and Word Embeddings Abstract 该论文提出了一种无监督的方法,使用每个文档中相关单词之间的文本相似度以及每个类别的关键字字典将文档分为几类。所提出的方法通过人类专业知识和语言模型丰富了类别…...
linux进程管理
进程管理 进程是启动的可执行程序的一个指令 1、进程简介 (1)进程的组成部分 已分配内存的地址空间安全属性,包括所有权凭据和特权程序代码的一个或多个执行线程进程状态 (2)程序和进程的区别 程序是一个静态的二进制…...
【深度强化学习】(6) PPO 模型解析,附Pytorch完整代码
大家好,今天和各位分享一下深度强化学习中的近端策略优化算法(proximal policy optimization,PPO),并借助 OpenAI 的 gym 环境完成一个小案例,完整代码可以从我的 GitHub 中获得: https://gith…...
【数据结构】第二站:顺序表
目录 一、线性表 二、顺序表 1.顺序表的概念以及结构 2.顺序表的接口实现 3.顺序表完整代码 三、顺序表的经典题目 1.移除元素 2.删除有序数组中的重复项 3.合并两个有序数组 一、线性表 在了解顺序表前,我们得先了解线性表的概念 线性表(linear…...
嵌入式安防监控项目——实现真实数据的上传
目录 一、相关驱动开发 二、A9主框架 三、脚本及数据上传实验 https://www.yuque.com/uh1h8r/dqrma0/tx0fq08mw1ar1sor?singleDoc# 《常见问题》 上个笔记的相关问题 一、相关驱动开发 /* mpu6050六轴传感器 */ i2c138B0000 { /* #address-cells <1>…...
SAP 生成UUID
UUID含义是通用唯一识别码 (Universally Unique Identifier),这 是一个软件建构的标准,也是被开源软件基金会 (Open Software Foundation, OSF) 的组织应用在分布式计算环境 (Distributed Computing Environment, DCE) 领域的一部分。 UUID-Universally…...
DevOPs介绍,这一篇就足够了
一、什么是DevOps? DevOps是一种将软件开发和IT运维进行整合的文化和运动。它的目标是通过加强软件开发、测试和运维之间的协作和沟通,使整个软件开发和交付过程更加高效、快速、安全和可靠。DevOps涵盖了从计划和设计到开发、测试、交付和部署的全生命…...
libcurl库简介
一、libcurl简介libcurl是一个跨平台的网络协议库,支持http, https, ftp, gopher, telnet, dict, file, 和ldap 协议。libcurl同样支持HTTPS证书授权,HTTP POST, HTTP PUT, FTP 上传, HTTP基本表单上传,代理,cookies,和用户认证。…...
Spark SQL支持DataFrame操作的数据源
DataFrame提供统一接口加载和保存数据源中的数据,包括:结构化数据、Parquet文件、JSON文件、Hive表,以及通过JDBC连接外部数据源。一个DataFrame可以作为普通的RDD操作,也可以通过(registerTempTable)注册成…...
Java【归并排序】算法, 大白话式图文解析(附代码)
文章目录前言一、排序相关概念1, 什么是排序2, 什么是排序的稳定性3, 七大排序分类二、归并排序1, 图文解析2, 代码实现三、性能分析四、七大排序算法总体分析前言 各位读者好, 我是小陈, 这是我的个人主页 小陈还在持续努力学习编程, 努力通过博客输出所学知识 如果本篇对你有…...
【springboot】数据库访问
1、SQL 1、数据源的自动配置-HikariDataSource 1、导入JDBC场景 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-jdbc</artifactId></dependency>数据库驱动? 为什么导入JD…...
普通和hive兼容模式下sql的差异
–odps sql –– –author:宋文理 –create time:2023-03-08 15:23:52 –– – 差异分为三块 – 1.运算符的差异 – 2.类型转换的差异 – 3.内建函数的差异 – 以下是运算符的差异: – BITAND(&) – 当输入参数是BIGINT类型的时候&…...
SkyWalking 10.2.0 SWCK 配置过程
SkyWalking 10.2.0 & SWCK 配置过程 skywalking oap-server & ui 使用Docker安装在K8S集群以外,K8S集群中的微服务使用initContainer按命名空间将skywalking-java-agent注入到业务容器中。 SWCK有整套的解决方案,全安装在K8S群集中。 具体可参…...
微信小程序之bind和catch
这两个呢,都是绑定事件用的,具体使用有些小区别。 官方文档: 事件冒泡处理不同 bind:绑定的事件会向上冒泡,即触发当前组件的事件后,还会继续触发父组件的相同事件。例如,有一个子视图绑定了b…...
Java 语言特性(面试系列1)
一、面向对象编程 1. 封装(Encapsulation) 定义:将数据(属性)和操作数据的方法绑定在一起,通过访问控制符(private、protected、public)隐藏内部实现细节。示例: public …...
线程与协程
1. 线程与协程 1.1. “函数调用级别”的切换、上下文切换 1. 函数调用级别的切换 “函数调用级别的切换”是指:像函数调用/返回一样轻量地完成任务切换。 举例说明: 当你在程序中写一个函数调用: funcA() 然后 funcA 执行完后返回&…...
Golang dig框架与GraphQL的完美结合
将 Go 的 Dig 依赖注入框架与 GraphQL 结合使用,可以显著提升应用程序的可维护性、可测试性以及灵活性。 Dig 是一个强大的依赖注入容器,能够帮助开发者更好地管理复杂的依赖关系,而 GraphQL 则是一种用于 API 的查询语言,能够提…...
如何在看板中有效管理突发紧急任务
在看板中有效管理突发紧急任务需要:设立专门的紧急任务通道、重新调整任务优先级、保持适度的WIP(Work-in-Progress)弹性、优化任务处理流程、提高团队应对突发情况的敏捷性。其中,设立专门的紧急任务通道尤为重要,这能…...
Qt Http Server模块功能及架构
Qt Http Server 是 Qt 6.0 中引入的一个新模块,它提供了一个轻量级的 HTTP 服务器实现,主要用于构建基于 HTTP 的应用程序和服务。 功能介绍: 主要功能 HTTP服务器功能: 支持 HTTP/1.1 协议 简单的请求/响应处理模型 支持 GET…...
高危文件识别的常用算法:原理、应用与企业场景
高危文件识别的常用算法:原理、应用与企业场景 高危文件识别旨在检测可能导致安全威胁的文件,如包含恶意代码、敏感数据或欺诈内容的文档,在企业协同办公环境中(如Teams、Google Workspace)尤为重要。结合大模型技术&…...
相机Camera日志分析之三十一:高通Camx HAL十种流程基础分析关键字汇总(后续持续更新中)
【关注我,后续持续新增专题博文,谢谢!!!】 上一篇我们讲了:有对最普通的场景进行各个日志注释讲解,但相机场景太多,日志差异也巨大。后面将展示各种场景下的日志。 通过notepad++打开场景下的日志,通过下列分类关键字搜索,即可清晰的分析不同场景的相机运行流程差异…...
JUC笔记(上)-复习 涉及死锁 volatile synchronized CAS 原子操作
一、上下文切换 即使单核CPU也可以进行多线程执行代码,CPU会给每个线程分配CPU时间片来实现这个机制。时间片非常短,所以CPU会不断地切换线程执行,从而让我们感觉多个线程是同时执行的。时间片一般是十几毫秒(ms)。通过时间片分配算法执行。…...
