Как использовать функцию ImageGrab.grab (). Load () или любую другую функцию для получения обновлений пикселей? - PullRequest
1 голос
/ 03 апреля 2019

Я пытался проверить, меняется ли пиксель на экране. Что мне нужно сделать?

Я долго серфил в интернете, но безуспешно. Я экспериментировал с кодом, представленным в сети, и обнаружил, что мой код дает данные только с экрана, который был открыт во время выполнения кода. то есть, если при запуске кода экран был белым, он будет считывать пиксели с белого экрана, даже если цвет экрана уже изменился.

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 в текстовом файле, я получил правильные значения. Но для выполнения задачи, которую мне нужно выполнить, необходимо несколько раз выполнить код, чтобы проверить, обновляются ли пиксели. Как мне это сделать?

1 Ответ

0 голосов
/ 04 апреля 2019

Это работает для меня:

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