程序效果
这是一个利用二维码传输文件的Python程序,目前能传输最大1MB的txt文件。
1、界面设计
本项目利用的是tkinter+opencv。主界面设计成这样,基于此界面可以完成文件的上传、打开、删除、分类、搜索和二维码的生成。
没有生成的时候就放一个默认的静态图片
读取gif并输出。
直接读gif的信息,比如duration延迟,然后逐帧读取图片,放在一个数组内,用after函数循环播放。
可以生成最多6个二维码,这里生成了一个。
2、识别效果
如果只针对单张二维码进行扫描,100KB以内的文件时间还能够忍受,文件超过100KB,在经过一个简单的数学运算后会发现需要很长的时间。所以我准备同时放多张二维码进行扫描。
但这种方式有很明显的尾部效应。前90%的数据和后10%的数据速度存在明显的差异。
这是由于多张二维码识别由于二维码畸变(也就是摄像头位置放的不准)存在很大的几率发生丢帧,这种丢帧是完全随机的。如果丢帧了只能靠下一轮识别再去识别一轮。后10%的数据并不是文件的后10%而是尚未识别的10%。
图很明显在最后会掉速
平均速度基本可以保持在4-6KB/s。
程序设计
这一部分主要讲程序当中一些细节,因为代码没写注释,我会在这个部分一步步补充,不愿看可以跳转到最后看整的代码。
主要有以下部分
- 按钮的显示与变化;
这里是重新编写了按钮类,bind可以绑定按钮的各种变化,这里使用的是ENTER和LEAVE,对应鼠标的悬停和离开。
command对应点击后跳转的函数。
class Bottun_spe:
def __init__(self, where, text, width, height, com=None, row=None, cod=None):
def on_enter(e):
myButton['background'] = '#EDF6FB'
myButton['fg'] = 'blue'
def on_leave(e):
myButton['background'] = '#FAFAFA'
myButton['fg'] = 'black'
self.data = []
m