会说话的读码器(Python实现)
文章目录
- 会说话的读码器(Python实现)
- 功能描述
- 模块功能
- 设计思路
- 代码实现
- UI示例
会说话的读码器(Python实现)
功能描述
实时读取视频中的一维码或二维码,并语音播报。还支持编码
模块功能
import threading # 多线程任务
import tkinter as tk # UI视图
import cv2 # 图像处理
import pyttsx3 # 文本转语音处理
import pyzbar.pyzbar as pyzbar # 条形码、二维码处理
import winsound # 系统警报音效
from PIL import Image,ImageTk # 图片格式转换
from pystrich.code128 import Code128Encoder # 编码器
设计思路
- 读取视频,并对每一帧进行处理,如果含有条形码或是二维码,用矩形框标识出来并识别内容;
- UI界面,显示视频,获取识别内容,编码。
代码实现
import threading
import tkinter as tk
import cv2
import pyttsx3
import pyzbar.pyzbar as pyzbar
import winsound
from PIL import Image,ImageTk
from pystrich.code128 import Code128Encoder# 定义全局变量
info = None
data = None# 读取视频,识别条码或二维码,矩形框标注,识别类型和内容
def video():global data, infocap = cv2.VideoCapture(0)while cap.isOpened():ret, frame = cap.read()frame = cv2.cvtColor(frame,cv2.COLOR_BGR2RGB)gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)barcodes = pyzbar.decode(gray)# print(barcodes)for barcode in barcodes:data = barcode.data.decode()barcodeType = barcode.type# 矩形框标注(x, y, w, h) = barcode.rectcv2.rectangle(frame, (x, y), (x + w, y + h), (0, 255, 0), 2)if info != data:print(f'type:{barcodeType}data:{data}, info:{info}')info = datatt.delete(0.0, tk.END)tt.insert(0.0, info + '\n')threading.Thread(target=beep).start()img = ImageTk.PhotoImage(Image.fromarray(frame))# print(img)lb['image'] = imglb.image = img# cv2.imshow('Code scanner', frame)if cv2.waitKey(5) == 27:breakcap.release()print(cap.isOpened())cv2.destroyAllWindows()# 语音播报,并发出系统提示音(警报音,通过音)、
def beep():global data, infowinsound.Beep(1000, 500)msg = tt.get(0.0, tk.END)engine.say(msg)try:engine.runAndWait()except RuntimeError:print(f'data:{data}, info:{info}')winsound.Beep(2000, 500)data = 'Runing'# 生成指定的码
def encode():msg = tt.get(0.0, tk.END)code = Code128Encoder(msg)code.save(r'code.png')# 开启视频线程
threading.Thread(target=video).start()
# 初始化语音播报
engine = pyttsx3.init()
# 设置语音播报速率
engine.setProperty('rate', 150)
# 初始化UI界面
root = tk.Tk()
root.title('会说话的读码器(含编码)')
tk.Button(root, text='编码器', command=encode).pack()
tt = tk.Text(root,width=80,height=10)
lb = tk.Label(root)
tt.pack()
lb.pack()
root.mainloop()
UI示例
会说话的读码器(Python实现)相关推荐
- 会说话的代码 Python pyttsx3,及AttributeError:partially initialized module......(......)报错,解决方法
安装pyttsx3 我们先安装需要的库pyttsx3文字朗读模块: 常用方法是在输入命令:pip install 所需的模块 -i http://pypi.doubanio.com/simple/ - ...
- 数据用压缩 bcd 码 java_IT职场新人选python,go还是java?用数据来说话
最近有读者在后台问,刚参加工作,想选一个职业方法,问我现在python很火,但是貌似就业机会不是很多,所以比较纠结现在到底是学python,go还是java. 所以我就想我们能不能用数据说话,看看py ...
- php和python哪个工资高-学python和php哪个前景好
众所周知,it技术是日新月异,没有哪一门技术是经久不衰的,都在不断的迭代变化,所以it从业者如果要想有更加稳定的发展空间,必须不断的提升自己,保持一个永久学习的心态,最近有学习者在问刚入门的新手php ...
- python学精通要多久-python多久能精通
AlphaGo 都在使用的 Python语言,是最接近 AI 的编程语言. 教育部考试中心近日公布了"关于全国计较机等级(NCRE)体系调解"的通知,抉择自2018年3月起,在全国 ...
- Python 类的定义、继承及使用对象
Python 类的定义.继承及使用对象 作者:保⑩洁 本文转载:http://www.17jo.com/program/python/base/ClassUse.html Python编程中类的概念可 ...
- python定义方法继承类_Python类的定义、继承及类对象使用方法简明教程
Python编程中类的概念可以比作是某种类型集合的描述,如"人类"可以被看作一个类,然后用人类这个类定义出每个具体的人--你.我.他等作为其对象.类还拥有属性和功能,属性即类本身的 ...
- python如何定义类_Python中类的定义、继承及使用对象实例详解
本文实例讲述了Python中类的定义.继承及使用对象的方法.分享给大家供大家参考.具体分析如下: Python编程中类的概念可以比作是某种类型集合的描述,如"人类"可以被看作一个类 ...
- python定义一个人类_Python类的定义、继承及类对象使用方法简明教程
Python编程中类的概念可以比作是某种类型集合的描述,如"人类"可以被看作一个类,然后用人类这个类定义出每个具体的人--你.我.他等作为其对象.类还拥有属性和功能,属性即类本身的 ...
- python里类的概念
Python编程中类的概念可以比作是某种类型集合的描述,如"人类"可以被看作一个类,然后用人类这个类定义出每个具体的人--你.我.他等作为其对象.类还拥有属性和功能,属性即类本身的 ...
最新文章
- 原创 | 常见损失函数和评价指标总结(附代码)
- GO语言基础之method
- Moss/Sharepoint 备份或还原时出错的处理(持续更新)
- 不同php文件,不同文件构建PHP程序的正确方式
- SQL Server BI Step by Step SSIS 5 --- 通过Email发送查询结果
- miRbase 数据库简介
- 微信公众号开发者模式入门
- Win10 清空回收站选项点不了怎么解决?
- mac 我用Mac的这一年
- python九九乘法表的实例_python九九乘法表的实例
- 生最困难的不是努力,而是做出正确的抉择
- day09-面向对象综合训练综合练习
- mysql 使用java代码进行操作系统_【MySQL 05】使用Java对MySQL进行操作(创建数据库)...
- 解决redis连接错误:MISCONF Redis is configured to save RDB snapshots, but it is currently not able to...
- FPGA和CPLD芯片选型介绍(一)
- 一个移动光猫能连几个路由器?
- 知识图谱第5享:公安五要素简介
- BLM的市场细分案例剖析
- myeclipse9解决shortcut name changed
- jquery循环获取元素