Принимая во внимание небольшие различия в цвете - PullRequest
0 голосов
/ 03 февраля 2019

Я пытаюсь создать простой тренировочный бот для EV для черного покемона, где он проверяет, не появляется ли на экране лилипип через цвет.

Проблема в том, что иногда, когда появляется lillipup, он немного отличается по цвету (очевидно, не блестящий).Он может быть на 1-3 выше или ниже в любом из каналов RGB, что делает практически невозможным прогнозирование.

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

Код (цвет - lillipup «по умолчанию»цвет, с которым я сравниваю):

        color = img.getpixel((x,y))
        r1=Color[0]
        r2=color[0]
        g1=Color[1]
        g2=color[1]
        b1=Color[2]
        b2=color[2]            

        d=math.sqrt((r1-r2)^2+(g1-g2)^2+(b1-b2)^2)

Я что-то здесь не так делаю или я должен делать это по-другому?

1 Ответ

0 голосов
/ 03 февраля 2019

Для измерения сходства между векторами косинусное расстояние должно работать намного лучше, чем евклидово расстояние.

Вы можете попробовать квантование цвета .

Вы можетеиспользуйте алгоритм k-средних для этого.Одна из реализаций - scikit-learn

Похоже, вы спрашиваете о проблеме распознавания объектов .Это обычно не тривиально.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...