Здравствуйте. Для начала напишу информацию что и зачем, чтобы было понятней для чего это нужно:
Имеется функция вычисления цвета пикселей.
Работает примерно так:
берется участок экрана высотой в один пиксель, там где расположена полоска с жизнями игрока.
pil_image_hp = get_screen(тут координаты участка высотой в пиксель)
Каждый пиксель сравнивается с цветом заполненных жизней
hp_color = [58, 37, 32] # это цвет хелсов
pixels = pil_image_hp[0].tolist() #берем одну строку пикселей из вырезки
for pixel in pixels:
print pixel
if pixel == hp_color: #если цвет пикселя совпадает с цветом хелсов, прибавляем общие хелсы
filled_red_pixels += 1
Но дело в том, что видимо из-за того, что полоса с жизнями в игре имеет некоторую прозрачность, при попадании какого-либо объекта за полосу жизней - цвет пикселей меняется на мельчайшую величину. Из-за этого количество пикселей цвета здоровья высчитывается неправильно:
Цвета найденных пикселей:
[58, 36, 32] - видна полоса здоровья
[58, 37, 32] - видна полоса здоровья
[58, 36, 32] - видна полоса здоровья
[58, 37, 32] - видна полоса здоровья
[58, 37, 32] - видна полоса здоровья
[58, 36, 32] - видна полоса здоровья
[58, 37, 32] - видна полоса здоровья
[58, 36, 32] - видна полоса здоровья
[57, 35, 31] - видна полоса здоровья
[148, 37, 24] - отсутствует цвет полосы здоровья (потраченые хелсы)
[147, 37, 24] - отсутствует цвет полосы здоровья (потраченые хелсы)
[147, 37, 24] - отсутствует цвет полосы здоровья (потраченые хелсы)
[147, 37, 24] - отсутствует цвет полосы здоровья (потраченые хелсы)
[147, 37, 24] - отсутствует цвет полосы здоровья (потраченые хелсы)
[147, 37, 24] - отсутствует цвет полосы здоровья (потраченые хелсы)
[147, 37, 24] - отсутствует цвет полосы здоровья (потраченые хелсы)
[147, 37, 24] - отсутствует цвет полосы здоровья (потраченые хелсы)
Как видно - разброс совсем маленький - на один-два всего.
Как можно произвести сравнение списков с допущением разброса?
То есть проблема вот в этой строке:
if pixel == hp_color: