Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/python-2.7/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用于Java中屏幕颜色分析的类_Java - Fatal编程技术网

用于Java中屏幕颜色分析的类

用于Java中屏幕颜色分析的类,java,Java,我正在寻找一个Java类,它可以让我检查像素(x,y)是红色还是所选屏幕区域的平均颜色是x。是否有一个类支持它?如果没有,我会尝试自己创建这样的类。Java是否有支持此类操作的工具?您可以使用Robot类进行简单的计算,以检查颜色是否接近您要查找的颜色 package test; import java.awt.Color; import java.awt.Robot; import java.awt.AWTException; public class main { static

我正在寻找一个Java类,它可以让我检查像素(x,y)是红色还是所选屏幕区域的平均颜色是x。是否有一个类支持它?如果没有,我会尝试自己创建这样的类。Java是否有支持此类操作的工具?

您可以使用Robot类进行简单的计算,以检查颜色是否接近您要查找的颜色

package test;

import java.awt.Color;
import java.awt.Robot;
import java.awt.AWTException;

public class main {

    static final Color RED_COLOR = new Color(255, 0, 0);

    private static boolean colorsAreClose(Color color1, Color color2, int threshold) {
        int r = (int) color1.getRed() - color2.getRed(), g = (int) color1.getGreen() - color2.getGreen(),
                b = (int) color1.getBlue() - color2.getBlue();
        return (r * r + g * g + b * b) <= threshold * threshold;
    }

    public static void main(String[] args) {
        Color pixelColor = null;
        try {
            Robot robot = new Robot();
            pixelColor = robot.getPixelColor(500, 500);
            System.out.println(String.format("Red %d, Green %d, Blue %d", pixelColor.getRed(), pixelColor.getGreen(),
                    pixelColor.getBlue()));

        } catch (AWTException e) {
            e.printStackTrace();
            return;
        }

        boolean isRedPixel = colorsAreClose(pixelColor, RED_COLOR, 50);
        System.out.println(isRedPixel ? "Pixel is red" : "Pixel is not red");
    }

}
封装测试;
导入java.awt.Color;
导入java.awt.Robot;
导入java.awt.AWTException;
公共班机{
静态最终颜色红色=新颜色(255,0,0);
私有静态布尔颜色ECLOSE(颜色颜色1、颜色2、整数阈值){
int r=(int)color1.getRed()-color2.getRed(),g=(int)color1.getGreen()-color2.getGreen(),
b=(int)color1.getBlue()-color2.getBlue();

返回(r*r+g*g+b*b)看,这正是我想要的。谢谢。