当前位置: 首页 > news >正文

条形码和二维码

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

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)&#xff0c;这 是一个软件建构的标准&#xff0c;也是被开源软件基金会 (Open Software Foundation, OSF) 的组织应用在分布式计算环境 (Distributed Computing Environment, DCE) 领域的一部分。 UUID-Universally…...

DevOPs介绍,这一篇就足够了

一、什么是DevOps&#xff1f; DevOps是一种将软件开发和IT运维进行整合的文化和运动。它的目标是通过加强软件开发、测试和运维之间的协作和沟通&#xff0c;使整个软件开发和交付过程更加高效、快速、安全和可靠。DevOps涵盖了从计划和设计到开发、测试、交付和部署的全生命…...

libcurl库简介

一、libcurl简介libcurl是一个跨平台的网络协议库&#xff0c;支持http, https, ftp, gopher, telnet, dict, file, 和ldap 协议。libcurl同样支持HTTPS证书授权&#xff0c;HTTP POST, HTTP PUT, FTP 上传, HTTP基本表单上传&#xff0c;代理&#xff0c;cookies,和用户认证。…...

Spark SQL支持DataFrame操作的数据源

DataFrame提供统一接口加载和保存数据源中的数据&#xff0c;包括&#xff1a;结构化数据、Parquet文件、JSON文件、Hive表&#xff0c;以及通过JDBC连接外部数据源。一个DataFrame可以作为普通的RDD操作&#xff0c;也可以通过&#xff08;registerTempTable&#xff09;注册成…...

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>数据库驱动&#xff1f; 为什么导入JD…...

普通和hive兼容模式下sql的差异

–odps sql –– –author:宋文理 –create time:2023-03-08 15:23:52 –– – 差异分为三块 – 1.运算符的差异 – 2.类型转换的差异 – 3.内建函数的差异 – 以下是运算符的差异&#xff1a; – BITAND&#xff08;&&#xff09; – 当输入参数是BIGINT类型的时候&…...

鸿蒙中用HarmonyOS SDK应用服务 HarmonyOS5开发一个医院挂号小程序

一、开发准备 ​​环境搭建​​&#xff1a; 安装DevEco Studio 3.0或更高版本配置HarmonyOS SDK申请开发者账号 ​​项目创建​​&#xff1a; File > New > Create Project > Application (选择"Empty Ability") 二、核心功能实现 1. 医院科室展示 /…...

最新SpringBoot+SpringCloud+Nacos微服务框架分享

文章目录 前言一、服务规划二、架构核心1.cloud的pom2.gateway的异常handler3.gateway的filter4、admin的pom5、admin的登录核心 三、code-helper分享总结 前言 最近有个活蛮赶的&#xff0c;根据Excel列的需求预估的工时直接打骨折&#xff0c;不要问我为什么&#xff0c;主要…...

Nuxt.js 中的路由配置详解

Nuxt.js 通过其内置的路由系统简化了应用的路由配置&#xff0c;使得开发者可以轻松地管理页面导航和 URL 结构。路由配置主要涉及页面组件的组织、动态路由的设置以及路由元信息的配置。 自动路由生成 Nuxt.js 会根据 pages 目录下的文件结构自动生成路由配置。每个文件都会对…...

基于Docker Compose部署Java微服务项目

一. 创建根项目 根项目&#xff08;父项目&#xff09;主要用于依赖管理 一些需要注意的点&#xff1a; 打包方式需要为 pom<modules>里需要注册子模块不要引入maven的打包插件&#xff0c;否则打包时会出问题 <?xml version"1.0" encoding"UTF-8…...

【Zephyr 系列 10】实战项目:打造一个蓝牙传感器终端 + 网关系统(完整架构与全栈实现)

🧠关键词:Zephyr、BLE、终端、网关、广播、连接、传感器、数据采集、低功耗、系统集成 📌目标读者:希望基于 Zephyr 构建 BLE 系统架构、实现终端与网关协作、具备产品交付能力的开发者 📊篇幅字数:约 5200 字 ✨ 项目总览 在物联网实际项目中,**“终端 + 网关”**是…...

c#开发AI模型对话

AI模型 前面已经介绍了一般AI模型本地部署&#xff0c;直接调用现成的模型数据。这里主要讲述讲接口集成到我们自己的程序中使用方式。 微软提供了ML.NET来开发和使用AI模型&#xff0c;但是目前国内可能使用不多&#xff0c;至少实践例子很少看见。开发训练模型就不介绍了&am…...

select、poll、epoll 与 Reactor 模式

在高并发网络编程领域&#xff0c;高效处理大量连接和 I/O 事件是系统性能的关键。select、poll、epoll 作为 I/O 多路复用技术的代表&#xff0c;以及基于它们实现的 Reactor 模式&#xff0c;为开发者提供了强大的工具。本文将深入探讨这些技术的底层原理、优缺点。​ 一、I…...

Xen Server服务器释放磁盘空间

disk.sh #!/bin/bashcd /run/sr-mount/e54f0646-ae11-0457-b64f-eba4673b824c # 全部虚拟机物理磁盘文件存储 a$(ls -l | awk {print $NF} | cut -d. -f1) # 使用中的虚拟机物理磁盘文件 b$(xe vm-disk-list --multiple | grep uuid | awk {print $NF})printf "%s\n"…...

用机器学习破解新能源领域的“弃风”难题

音乐发烧友深有体会&#xff0c;玩音乐的本质就是玩电网。火电声音偏暖&#xff0c;水电偏冷&#xff0c;风电偏空旷。至于太阳能发的电&#xff0c;则略显朦胧和单薄。 不知你是否有感觉&#xff0c;近两年家里的音响声音越来越冷&#xff0c;听起来越来越单薄&#xff1f; —…...

短视频矩阵系统文案创作功能开发实践,定制化开发

在短视频行业迅猛发展的当下&#xff0c;企业和个人创作者为了扩大影响力、提升传播效果&#xff0c;纷纷采用短视频矩阵运营策略&#xff0c;同时管理多个平台、多个账号的内容发布。然而&#xff0c;频繁的文案创作需求让运营者疲于应对&#xff0c;如何高效产出高质量文案成…...