如何使python程序更快地截图?
我一直在编写这个脚本,无论屏幕上某个颜色的像素在哪里,都会点击屏幕,但我遇到了一个问题,当我循环这个脚本时,它会截图,但在30秒的循环中,只有大约12个屏幕截图,而程序快速点击像素的时间应该是600秒。我迷路了如何使python程序更快地截图?,python,python-3.x,screenshot,python-mss,Python,Python 3.x,Screenshot,Python Mss,我一直在编写这个脚本,无论屏幕上某个颜色的像素在哪里,都会点击屏幕,但我遇到了一个问题,当我循环这个脚本时,它会截图,但在30秒的循环中,只有大约12个屏幕截图,而程序快速点击像素的时间应该是600秒。我迷路了 xx = 0 while xx <= 600: with mss.mss() as sct: region = {'top': 0, 'left': 0, 'width': 1920, 'height': 1080} imgg = sct.g
xx = 0
while xx <= 600:
with mss.mss() as sct:
region = {'top': 0, 'left': 0, 'width': 1920, 'height': 1080}
imgg = sct.grab(region)
img1 = mss.tools.to_png(imgg.rgb,imgg.size,output="C:/Users/yaahy/Desktop/scrnshotoutput/imageforgamehack"+str(xx)+".png")
imgname = "C:/Users/yaahy/Desktop/scrnshotoutput/imageforgamehack"+str(xx)+".png"
pxls = find_yellow_pixels(imgname)
pyautogui.click(pxls[0],pxls[1])
time.sleep(.05)
xx = xx + 1
xx=0
当xx第一次时,您应该重写,以避免每次迭代都实例化一个新的MSS
类,并删除睡眠:
import mss
with mss.mss() as sct:
region = {'top': 0, 'left': 0, 'width': 1920, 'height': 1080}
for xx in range(600):
imgname = "C:/Users/yaahy/Desktop/scrnshotoutput/imageforgamehack" + str(xx) + ".png"
imgg = sct.grab(region)
img1 = mss.tools.to_png(imgg.rgb, imgg.size, output=imgname)
# pxls = find_yellow_pixels(imgname)
# pyautogui.click(pxls[0],pxls[1])
然后,正如评论员建议的那样,您应该解释您想要实现的目标,也许您可以放弃PNG创建,直接使用原始数据。是在抓取区域、编写文件或查找像素时,您的程序花费的时间太长了吗?您应该分析您的代码,找出需要改进的地方,即使是像start=datetime.datetime.now()
,然后调用函数,然后调用stop=datetime.datetime.now()
和打印(stop-start)这样简单的操作
将为您提供一些好的开始信息with@MichaelSpeer屏幕截图保存得很慢,通常每个屏幕截图需要4秒左右的时间,给我留下大约12张照片。检查imgg.pixels
数组,而不是保存为png并重新加载。这样可以避免运行压缩算法、等待磁盘保存、等待磁盘加载,以及运行解压缩算法以查看所获取的像素。imgg已经是一个表示图像的对象imgg.brga
具有二进制图像信息,imgg.pixels
具有分组在表示数据行的元组中的RGB颜色元组。因此,如果您知道要查找的是什么,可以沿着行元组遍历,以检查具有所需颜色元组的列。希望这是有道理的