Есть ли способ определить значение RGB определенного пикселя и использовать его в условии if?

Я пытаюсь написать скрипт, который автоматизирует скучную работу. Для этого я использую "pyautogui", и большая часть скрипта готова. ОС Windows кстати.

Моя проблема в том, что в настоящее время я использую команды time.sleep(), чтобы скрипт работал между каждым этапом процесса, но было бы лучше определить значение RGB определенного пикселя.

То, что я сделал на данный момент, похоже на это;

pyautogui.click(req_management_find[0],req_management_find[1])    
time.sleep(2)
pyautogui.click(req_management_print[0],req_management_print[1])
while True:
         time.sleep(0.5)
         pix=pyautogui.pixel(1348,131)
         if pix[1] == 27 and pix[2] == 161 and pix[3] == 226:
           break
         else:
                 time.sleep(0.5)

pyautogui.click(req_print_close[0],req_print_close[1])

Это просто ждет вечно, а не выходит из цикла while. Я прочитал значение RGB пикселя, используя pyautogui.displayMousePosition(). Обычно это (255, 255, 255). Через некоторое неопределенное время программа, которую я пытаюсь написать, выдает всплывающее окно, которое меняет RGB пикселя с (255, 255, 255) на (27, 161, 226).

Почему мой код не обнаруживает это изменение?


person SatisG    schedule 05.04.2019    source источник


Ответы (1)


Индексы начинаются с 0, так что это:

if pix[0] == 27 and pix[1] == 161 and pix[2] == 226:

или вы можете сделать это более явным, используя:

if pix.red == 27 and pix.green == 161 and pix.blue == 226:

И, конечно же, как предложил @Aditya Santoso:

if pix == (27, 161, 226):
person Thierry Lathuille    schedule 05.04.2019
comment
Является ли pix кортежем? Если это так, вы можете сравнить, используя pix == (27, 161, 226) - person Aditya Santoso; 05.04.2019
comment
Благодарю вас! Я узнал о питоне 2 дня назад, поэтому я сделал ошибку новичка. Это решило проблему! - person SatisG; 05.04.2019