文章目录

  • 会说话的读码器(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 # 编码器

设计思路

  1. 读取视频,并对每一帧进行处理,如果含有条形码或是二维码,用矩形框标识出来并识别内容;
  2. 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实现)相关推荐

  1. 会说话的代码 Python pyttsx3,及AttributeError:partially initialized module......(......)报错,解决方法

    安装pyttsx3 我们先安装需要的库pyttsx3文字朗读模块: 常用方法是在输入命令:pip install 所需的模块 -i http://pypi.doubanio.com/simple/ - ...

  2. 数据用压缩 bcd 码 java_IT职场新人选python,go还是java?用数据来说话

    最近有读者在后台问,刚参加工作,想选一个职业方法,问我现在python很火,但是貌似就业机会不是很多,所以比较纠结现在到底是学python,go还是java. 所以我就想我们能不能用数据说话,看看py ...

  3. php和python哪个工资高-学python和php哪个前景好

    众所周知,it技术是日新月异,没有哪一门技术是经久不衰的,都在不断的迭代变化,所以it从业者如果要想有更加稳定的发展空间,必须不断的提升自己,保持一个永久学习的心态,最近有学习者在问刚入门的新手php ...

  4. python学精通要多久-python多久能精通

    AlphaGo 都在使用的 Python语言,是最接近 AI 的编程语言. 教育部考试中心近日公布了"关于全国计较机等级(NCRE)体系调解"的通知,抉择自2018年3月起,在全国 ...

  5. Python 类的定义、继承及使用对象

    Python 类的定义.继承及使用对象 作者:保⑩洁 本文转载:http://www.17jo.com/program/python/base/ClassUse.html Python编程中类的概念可 ...

  6. python定义方法继承类_Python类的定义、继承及类对象使用方法简明教程

    Python编程中类的概念可以比作是某种类型集合的描述,如"人类"可以被看作一个类,然后用人类这个类定义出每个具体的人--你.我.他等作为其对象.类还拥有属性和功能,属性即类本身的 ...

  7. python如何定义类_Python中类的定义、继承及使用对象实例详解

    本文实例讲述了Python中类的定义.继承及使用对象的方法.分享给大家供大家参考.具体分析如下: Python编程中类的概念可以比作是某种类型集合的描述,如"人类"可以被看作一个类 ...

  8. python定义一个人类_Python类的定义、继承及类对象使用方法简明教程

    Python编程中类的概念可以比作是某种类型集合的描述,如"人类"可以被看作一个类,然后用人类这个类定义出每个具体的人--你.我.他等作为其对象.类还拥有属性和功能,属性即类本身的 ...

  9. python里类的概念

    Python编程中类的概念可以比作是某种类型集合的描述,如"人类"可以被看作一个类,然后用人类这个类定义出每个具体的人--你.我.他等作为其对象.类还拥有属性和功能,属性即类本身的 ...

最新文章

  1. 原创 | 常见损失函数和评价指标总结(附代码)
  2. GO语言基础之method
  3. Moss/Sharepoint 备份或还原时出错的处理(持续更新)
  4. 不同php文件,不同文件构建PHP程序的正确方式
  5. SQL Server BI Step by Step SSIS 5 --- 通过Email发送查询结果
  6. miRbase 数据库简介
  7. 微信公众号开发者模式入门
  8. Win10 清空回收站选项点不了怎么解决?
  9. mac 我用Mac的这一年
  10. python九九乘法表的实例_python九九乘法表的实例
  11. 生最困难的不是努力,而是做出正确的抉择
  12. day09-面向对象综合训练综合练习
  13. mysql 使用java代码进行操作系统_【MySQL 05】使用Java对MySQL进行操作(创建数据库)...
  14. 解决redis连接错误:MISCONF Redis is configured to save RDB snapshots, but it is currently not able to...
  15. FPGA和CPLD芯片选型介绍(一)
  16. 一个移动光猫能连几个路由器?
  17. 知识图谱第5享:公安五要素简介
  18. BLM的市场细分案例剖析
  19. myeclipse9解决shortcut name changed
  20. jquery循环获取元素

热门文章

  1. Keepalive+redis主从复制实现redis高可用
  2. 西门子S7-200 SMART 高速计数器之编码器使用(一)
  3. Java汉字转为拼音工具类
  4. SiamFC:利用全卷积孪生网络进行视频跟踪
  5. 胖硕鼠问题(动态规划)
  6. AweCleaner for Mac(一体式Mac系统清理应用)
  7. 数据结构实验课:实验四、队列的实现及应用
  8. 统计个位数字 (本题要求实现一个函数,可统计任一整数中某个位数出现的次数。例如-21252中,2出现了3次,则该函数应该返回3)
  9. 大数据初级笔记一:大数据入门介绍
  10. 千万级用户的Android客户端是如何养成的