如何比较像素的颜色是否与另一个像素的颜色相似

How to compare if the color of a pixel Is similar to another

我正在制作一个程序,它可以自动玩一个叫做 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;
        }
    }

使用它应该在像素变得相似时按下,但结果总是不同,比如它说它们一直都是一样的,永远不会更新。

您的问题可能是因为使用了错误的Colorclass。您可以在 JDK:

中找到 2 Color classes
  1. java.awt.Color:公开返回 int 值的 getRed、getGreen、getBlue 方法 0-255 .
  2. javafx.scene.paint.Color:公开返回 double 值的 getRed、getGreen、getBlue 方法 0-1 .

如果您使用 javafx.scene.paint.Color,您的距离将永远不会超过 1.73。您需要使用 java.awt.Color 来获得 0 - 441.67

之间的距离