Инструкции теряются, если есть 2 субтитра, отлично работает только с 1 - PullRequest
1 голос
/ 16 мая 2019

Когда вместо местоположения я помещаю текстовое значение '(255, 255, 255)' в любое время, и если инструкции все работает нормально.Я устранял неисправности в течение 3 часов, и у меня закончились идеи.Я позаботился о том, чтобы при одинаковых цветах этот цикл терялся.

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

from PIL import ImageGrab
import time

time.sleep(1)
px=ImageGrab.grab().load()               

x = 20

y = 20

color = px[x, y]

location = '(255, 255, 255)'

if (color == location):
    print('you are here')


if not (color == location):
    print('you arent here')

Даже если пиксель белый, он каждый раз говорит, что это не так, что неверно.Что случилось?Это действительно выглядит странно для меня.

1 Ответ

0 голосов
/ 16 мая 2019

Функция ImageGrab.grab().load() возвращает массив кортежей целых чисел .

Другими словами, каждый пиксель является кортежем, который выглядит следующим образом:

In [4]: im = ImageGrab.grab().load()

In [5]: im[0,0]
Out[5]: (24, 24, 25, 255)

, которые содержат значения (red,green,blue,alpha) в типе int.

Вы пытаетесь сравнить кортеж чисел со строкой location = '(255, 255, 255)'.Это не удастся, потому что вы не можете сравнить строку (которая представляет собой массив символов) с числом.

Например,

In [12]: 2 == '2'
Out[12]: False

Я не буду решать вашу домашнюю работу длявам, но, может быть, это поможет:

In [14]: location = (255,255,255)

In [15]: color = (255,255,255,0)

In [16]: [color[i] == location[i] for i in range(3)]
Out[16]: [True, True, True]

In [17]: all([color[i] == location[i] for i in range(3)])
Out[17]: True
...