一个简单的二维码传输技术(Python语言)

本文介绍了一个使用Python实现的二维码传输文件程序,包括界面设计、二维码生成、读取和识别。程序采用tkinter和opencv,支持最大1MB的txt文件传输。识别速度平均4-6KB/s,但大文件可能存在尾部效应。程序代码已上传至Gitee,将持续更新。
摘要由CSDN通过智能技术生成

程序效果

这是一个利用二维码传输文件的Python程序,目前能传输最大1MB的txt文件。

1、界面设计

本项目利用的是tkinter+opencv。主界面设计成这样,基于此界面可以完成文件的上传、打开、删除、分类、搜索和二维码的生成。
在这里插入图片描述

没有生成的时候就放一个默认的静态图片
在这里插入图片描述
读取gif并输出。
直接读gif的信息,比如duration延迟,然后逐帧读取图片,放在一个数组内,用after函数循环播放。
可以生成最多6个二维码,这里生成了一个。
在这里插入图片描述

2、识别效果

如果只针对单张二维码进行扫描,100KB以内的文件时间还能够忍受,文件超过100KB,在经过一个简单的数学运算后会发现需要很长的时间。所以我准备同时放多张二维码进行扫描。
但这种方式有很明显的尾部效应。前90%的数据和后10%的数据速度存在明显的差异。
这是由于多张二维码识别由于二维码畸变(也就是摄像头位置放的不准)存在很大的几率发生丢帧,这种丢帧是完全随机的。如果丢帧了只能靠下一轮识别再去识别一轮。后10%的数据并不是文件的后10%而是尚未识别的10%。
图很明显在最后会掉速
很明显在最后会掉速
平均速度基本可以保持在4-6KB/s。

程序设计

这一部分主要讲程序当中一些细节,因为代码没写注释,我会在这个部分一步步补充,不愿看可以跳转到最后看整的代码。

主要有以下部分

  1. 按钮的显示与变化;
    这里是重新编写了按钮类,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
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值