Python的速度超过每秒10张截图的速度吗?
现在我需要一个非常快速的屏幕截图,将屏幕截图提供给CNN,该屏幕截图将根据截图更新鼠标移动。我正在模拟this paper中提出的同一种行为,并且同样执行图6中的步骤(没有极坐标转换)。由于需要真正快速输入的结果,我搜索了一下周围,并已经能够获得这个脚本from here稍加修改,输出10FPSPython的速度超过每秒10张截图的速度吗?
from PIL import ImageGrab
from datetime import datetime
while True:
im = ImageGrab.grab([320, 180, 1600, 900])
dt = datetime.now()
fname = "pic_{}.{}.png".format(dt.strftime("%H%M_%S"), dt.microsecond // 100000)
im.save(fname, 'png')
我可以期待什么速度?如果可以使用其他程序,我会很好。
写入磁盘非常缓慢,可能是使您的循环需要这么长时间的很大一部分。尝试对im.save()
行进行注释并查看可以捕获多少个屏幕截图(添加一个counter
变量或类似的东西来计算正在捕获多少屏幕截图)。
假设磁盘I/O是瓶颈,您需要将这两个任务分开。有一个循环捕获屏幕截图并将它们存储在内存中(例如以时间戳作为键的字典),然后在单独的线程中将元素从字典中提取出来并将它们写入磁盘。
请参阅this question以获取Python中的线程指针,如果您之前没有做过很多工作。
哦,你是对的,我的磁盘严重瓶颈。在我的情况下,我实际上不需要将文件保存到磁盘,我只需要在tensorflow中读取它们。我想我可以直接在一个tf脚本中使用图像抓取,这似乎是20-30帧左右,这是我需要的:)我不知道为什么我没有考虑这个,但现在它一切都显而易见。非常感谢您的回答!它可能只是节省了我吨的时间 – Dinoswarleafs
很高兴我可以帮助:) – dimo414
你需要拍摄完整的截图吗?如果这只是您需要的,可能只需要直接捕获鼠标坐标。 – dimo414
啊谢谢:P无法发现它。游标的移动将根据截图上的其他元素进行移动,就像纸张中的玩家根据游戏中的墙壁改变其位置一样。 – Dinoswarleafs
您使用的是SSD吗? – cup