首页 > 解决方案 > 如何使用 ImageGrab.grab().load() 函数或任何其他函数来获取像素更新?

问题描述

我一直在尝试检查屏幕上的像素是否正在变化。我需要做什么?

我上网很久了,没有成功。我已经对网上给出的代码进行了试验,发现我的代码只提供了代码运行时打开的屏幕上的数据。即,如果在代码运行时屏幕是白色的,它将从白屏读取像素,即使屏幕颜色已经改变。

from PIL import ImageGrab
px=ImageGrab.grab().load()
m=px[613,296]
print(m)
while 1:
    if m!=px[613,296]:
        m=px[613,296]
        print(m)

我运行代码并开始播放视频,我预计值会不断变化,但我得到的只是(255,255,255)(空闲的白屏)我还尝试手动更改屏幕。

我尝试在没有控制台的情况下运行代码并在文本文件中打印没有 while 循环的输出,我得到了正确的值。但是我需要完成的任务需要多次运行代码以检查像素是否更新。我应该如何做到这一点?

标签: pythonpython-3.ximage-processingpython-imaging-librarypixel

解决方案


这对我有用:

#!/usr/bin/env python3

from PIL import ImageGrab

while True:
   px=ImageGrab.grab().load()
   m=px[613,296]
   print(m)

我认为如果你只抓住一个像素会更快,但通过指定这样的边界框所以你只抓住一个像素:

#!/usr/bin/env python3

from PIL import ImageGrab

while True:
   screen=ImageGrab.grab(bbox=(613,296,614,297))
   px = screen.load()
   m=px[0,0]
   print(m,screen.size)

推荐阅读