Pyautogui.pixel некорректно распознает цвет, в чем причина?

Суть проблемы:
Понадобилось написать программу, которая постоянно считывает цвет указанного пикселя и в зависимости от его значения выводит сообщение. Для определения цвета использовал pyautogui.pixel(x,y). Обнаружил, что через некоторое время программа начинает определять цвет, как (255, 255, -1) и после это значение не меняется.
В чем может быть причина?

Код для воспроизведения “сбоя”:
import pyautogui
input()
i=1
while True:
    change=[pyautogui.pixel(200,200)]
    print(i,change)      
    i+=1


Результат появляется близко к 10000-му считыванию:
5c03854f837e4809619055.png

Использую Python 3.6.4 с библиотеками:
Package Version
------------- --------
keyboard 0.11.0
numpy 1.14.0
opencv-python 3.4.0.12
Pillow 5.0.0
pip 18.1
PyAutoGUI 0.9.38
PyMsgBox 1.0.6
PyScreeze 0.1.13
PyTweening 1.0.3
pywin32 222
setuptools 28.8.0

Пробовал на ПК (Windows 8.1 x64, 2Гб RAM) и ноутбуке (Windows 10 x64, 4Гб RAM).
  • Вопрос задан
  • 1859 просмотров
Решения вопроса 1
@yeedab
https://github.com/asweigart/pyautogui/issues/229

import ctypes


def pixel(x, y):
    hdc = ctypes.windll.user32.GetDC(0)
    color = ctypes.windll.gdi32.GetPixel(hdc, x, y)
    # color is in the format 0xbbggrr https://msdn.microsoft.com/en-us/library/windows/desktop/dd183449(v=vs.85).aspx
    r = color % 256
    g = (color // 256) % 256
    b = color // (256 ** 2)
    ctypes.windll.user32.ReleaseDC(0, hdc)
    return (r, g, b)


input()
i = 1
while True:
    change = [pixel(200, 200)]
    print(i, change)
    i += 1


5c08cb364f977332535508.png
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы