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秒。如果您希望值发生变化,您需要在中移动抓取()
,而循环,当然?我不明白。