Как сравнить, если цвет пикселя похож на другой - PullRequest
1 голос
/ 13 мая 2019

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

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

boolean similarTo(Color c,Color v){
        double distance = Math.sqrt((c.getRed() - v.getRed())*(c.getRed() - v.getRed()) + (c.getGreen() - v.getGreen())*(c.getGreen() - v.getGreen()) + (c.getBlue() - v.getBlue())*(c.getBlue() - v.getBlue()));
//      double average1 = c.getRed()+c.getBlue()+c.getGreen();
//      double average2 = v.getRed()+v.getBlue()+v.getGreen();

        if(distance < 100 ){
            return true;
        }else{
            return false;
        }
    }

Используя это, он должен нажимать, когда пиксель становится похожим, но результаты всегда различаются, например, он говорит, что они все время одинаковы, никогда не обновляются.

1 Ответ

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

Ваша проблема может быть связана с использованием неправильного Color класса.Вы можете найти 2 Color класса в JDK:

  1. java.awt.Color: который предоставляет методы getRed, getGreen, getBlue, возвращающие int значения между 0-255 .
  2. javafx.scene.paint.Color: который предоставляет методы getRed, getGreen, getBlue, возвращающие double значения между 0-1 .

Если вы используете javafx.scene.paint.Color, ваше расстояние никогда не будет больше 1,73.Вам нужно использовать java.awt.Color, чтобы расстояние между 0 - 441.67

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