项目:利用可见光传输信息的软件

项目描述:发送方将信息编码为一组信号,并通过可见光发送。接收方通过手机录制视频的

                  形式接收,并解码得到原始消息。


编码部分

实现方式

1.读入一个随机文件,转成二进制的比特流,1代表当前像素点为黑,0代表当前像素为白(10*10方块)

2.调用PIL实现比特流像图像的转换,遍历绘制黑白像素点,生成.jpg图像

3.通过ffmpy库(FFMPEG接口)将生成的图像转成视频

    ff=FFmpeg(inputs={'%d.png':'-f image2 -r 10'},outputs={ofname:'-vcodec mpeg4'}) 

    ff.cmd

>>>ffmpeg -f image2 -r 1 -i %d.png -vcodec mpeg4 ofname

    ff.run()

>>>调用命令行

关于FFMPEG的命令使用,参照:FFMPEG命令详解


解码部分

实现方式:

1.将手机拍摄的视频通过OpenCV的VideoCapture函数每隔3帧提取一张(生成视频10fps,拍摄30fps),得到图像

2.识别定位点,findContours查找轮廓,找到符合要求的轮廓,然后将二维码裁出,并resize成生成图片的大小

3.将裁剪的图像进行处理->灰度图->二值化(阈值160),遍历图像像素点,0为1,255为0,读出bit流,每8bit为初始字符,输出解码文件

4.将解码出的bit流再编码,与原本生成的图像异或,检测误码

5.将读出的bit流与原bit流异或,得到一个有效位文件,1-有效,0-无效


Git地址:TransByLight

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。