如何使用ImageGrab.grab()。load()函数或任何其他函数获取像素更新?

发布于 2021-01-29 15:01:52

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

我上网已经很长时间了,没有成功。我对网络上提供的代码进行了实验,发现我的代码仅从运行代码时打开的屏幕中提供数据。即,如果在运行代码时屏幕为白色,即使屏幕颜色已经更改,它将从白色屏幕读取像素。

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循环的情况下打印输出,但我得到了正确的值,但是我需要完成的任务需要多次运行代码以检查像素是否更新。我应该如何做到这一点?

关注者
0
被浏览
85
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

    这对我有用:

    #!/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)
    


知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看