Я использую 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 не идеально определяет цвет ячейки. В итоге получается что при сравнении ближайших цветов, бледно-розовый определяет как белый, либо, тёмно-синий как фиолетовый.
Может у вас есть идеи как можно решить данную проблему ?