如何使python程序更快地截图?

如何使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

我一直在编写这个脚本,无论屏幕上某个颜色的像素在哪里,都会点击屏幕,但我遇到了一个问题,当我循环这个脚本时,它会截图,但在30秒的循环中,只有大约12个屏幕截图,而程序快速点击像素的时间应该是600秒。我迷路了

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颜色元组。因此,如果您知道要查找的是什么,可以沿着行元组遍历,以检查具有所需颜色元组的列。希望这是有道理的