![](https://img-blog.csdnimg.cn/ddc3505a109a4ca48e77d5229b1af290.png)
目录
二、使用OpenCV库对100帧截图进行识别,并与原29帧二维码图片内含信息进行比对
三、把获取的100帧二维码信息去重,并保持原来顺序,重组成原来的文件
上一篇文章实现了tkinter显示动态二维码。本篇为了模拟摄像头读取动态二维码信息,使用pyautogui库,对电脑屏幕进行录屏(连续截图),然后利用OpenCV按帧读取二维码,最后重组被拆分的文件。
一、使用pyautogui库,对电脑屏幕进行录屏
pyautogui库可以实现电脑屏幕的截图,经过测试,自己电脑的性能大概可以实现0.1S的截图,由于上一篇动态二维码的帧率速度0.2S每帧,由香农定理可知,截图的采样频率应两倍于0.2S每帧(快于0.1S每帧),所以pyautogui录屏性能应该是满足要求的。具体理论可以参考以下文章:
采样定理为2倍,但是为何工程上要求2.56倍采样频率进行采样?https://blog.csdn.net/seekyong/article/details/104383577 第一步,将原来拆分的29张二维码转换成GIF,方便后面测试录屏读取。
第二步,一边打开图片播放器播放GIF图片,另一边同时运行save_qrs(_len)函数对电脑屏幕录像(连续截图),并把每帧截图存入固定文件夹。
编写的save_qrs(_len)函数通过输入参数_len,实现循环截图_len次,并把截取的图片保存到read_cache文件夹下面,保存图片前需要先把原来的文件夹内文件清空。主要代码如下:
import pyautogui
import os
def save_qrs(_len):
# 删除原来read_cache文件夹内的文件
for _pic_file in os.listdir("read_cache"):
os.remove("read_cache/" + _pic_file)
# 是否存在read_cache这个文件夹
if not os.path.exists("read_cache"):
os.makedirs("read_cache")
# 从0到_len截图_len次
for i in range(0,_len):
_screenshot = pyautogui.screenshot('read_cache/read_qrs_00'+str(i)+'.png')
if __name__ == '__main__':
save_qrs(100)
测试时,使函数输入_len为100,循环截图100次,程序运行结果如下,截取了电脑屏幕100次,并将截取的100帧图片保存在read_cache文件夹下: