Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/326.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何使用ImageGrab.grab().load()函数或任何其他函数获取像素更新?_Python_Python 3.x_Image Processing_Python Imaging Library_Pixel - Fatal编程技术网

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

Python 如何使用ImageGrab.grab().load()函数或任何其他函数获取像素更新?,python,python-3.x,image-processing,python-imaging-library,pixel,Python,Python 3.x,Image Processing,Python Imaging Library,Pixel,我一直在检查屏幕上的像素是否在变化。我需要做什么 我上网已经很久了,但没有成功。我对网络上给出的代码进行了实验,发现我的代码只提供了运行代码时打开的屏幕上的数据。也就是说,如果代码运行时屏幕是白色的,它将从白色屏幕读取像素,即使屏幕颜色已经改变 从PIL导入ImageGrab px=ImageGrab.grab().load() m=px[613296] 打印(m) 而1: 如果我=px[613296]: m=px[613296] 打印(m) 我运行了代码并启动了一个视频,我希望值会不断变化,

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

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

从PIL导入ImageGrab
px=ImageGrab.grab().load()
m=px[613296]
打印(m)
而1:
如果我=px[613296]:
m=px[613296]
打印(m)
我运行了代码并启动了一个视频,我希望值会不断变化,但我得到的只是(255255255)(空闲的白色屏幕),我还尝试手动改变屏幕

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

这对我很有用:

#!/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)
这对我很有用:

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

最有可能的是,你的坐标是错误的。尝试运行视频全屏,使整个屏幕发生变化,或者尝试连续打印
px.mean()
,查看值是否随着视频变亮/变暗而变化。我确信我的坐标是正确的。我提到过,我曾尝试通过在该坐标上移动窗口和图片,手动更改RGB值。我试着运行你的代码,但它说px没有mean属性。我用pyautogui尝试了相同的代码,它工作正常,但速度太慢,无法满足我的需要,访问一个像素大约需要0.8秒。如果您希望值发生变化,则需要在
while
循环中移动
grab()
,当然?我不明白。最有可能的是你把坐标搞错了。尝试运行视频全屏,使整个屏幕发生变化,或者尝试连续打印
px.mean()
,查看值是否随着视频变亮/变暗而变化。我确信我的坐标是正确的。我提到过,我曾尝试通过在该坐标上移动窗口和图片,手动更改RGB值。我试着运行你的代码,但它说px没有mean属性。我在pyautogui上尝试了相同的代码,它工作得很好,但对于我的需要来说太慢了,访问一个像素需要大约0.8秒。如果您希望值发生变化,您需要在
中移动
抓取()
,而
循环,当然?我不明白。