@Gigabait

Как лучше получить цвет пикселя?

Я использую getpixel для получения цвета, но проблема в том что при получении цвета пикселя он показывает не всегда один и тот же результат. (Цвета отличаются) результат ( цвета квадратов по данным из getpixel ) : оригинал getpixel
r, g, b = screenshot_data.getpixel((center_x, center_y))

Потом нахожу ближайший цвет, в colors находятся 6 цветов. Но из-за большого разброса голубого/синего либо розового/белого цветов, присваивает ошибочный цвет.
c = 0
    for color in colors:
        diff = 0
        for i in range(3):
            diff += abs(color[i]-pix[i])
        if diff < 70:
            return names[c]
        c += 1

Думал над идеей сделать диапазон цветов/оттенков и проверять если цвет из getpixel входит в этот диапазон, то вернуть название цвета. Но я не нашел в интернете готовый диапазон RGB цветов.
Пробовал через pyautogui.locateOnScreen. Он в упор в регионе 57x57 не может определить что-это.
for key, value in images.items():
        elem = pyautogui.locateOnScreen(value['path'], region=(x, y, x+CELL_SIZE, y+CELL_SIZE) )
        if elem:
            print('Meat found!', elem)
            draw.rectangle([(s[0], s[1]),(s[0]+CELL_SIZE,s[1]+CELL_SIZE)], width = 1, fill=value['color'], outline='red')


Короче говоря, мне нужно точно определить к какому из 6 цветов (красный, синий, фиолетовый, белый, зеленый, желтый) относится ячейка. Моя проблема в том что getpixel не идеально определяет цвет ячейки. В итоге получается что при сравнении ближайших цветов, бледно-розовый определяет как белый, либо, тёмно-синий как фиолетовый.

Может у вас есть идеи как можно решить данную проблему ?
  • Вопрос задан
  • 77 просмотров
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы