如果一个像素的颜色与另一个像素的颜色相似,如何比较

时间:2019-05-13 01:35:04

标签: java colors

我正在编写一个程序,该程序可以自动玩名为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 :(得分:0)

您的问题可能是由于使用了错误的Color类。您可以在JDK中找到2个Color类:

  1. java.awt.Color:公开了getRed,getGreen和getBlue方法,这些方法返回 0-255 之间的 int 值。
  2. javafx.scene.paint.Color:公开了getRed,getGreen和getBlue方法,这些方法返回 0-1 之间的 double 值。

如果您使用javafx.scene.paint.Color,则您的距离永远不会大于1.73。您需要使用java.awt.Color来设置0-441.67

之间的距离