1

我有一个关于java中的像素搜索的问题。目前,我的课程/程序正在逐个像素地搜索,这对于我的目的来说会变慢。我不想让 Java 更快地搜索像素,所以我想到了问你们的想法。我正在通过 RGB 颜色搜索像素。这是我的源代码:

    final int rot = 0;
    final int gruen = 0;
    final int blau = 0;
    int toleranz = 1;

    Color pixelFarbe;

    Dimension bildschirm = Toolkit.getDefaultToolkit().getScreenSize();


    Robot roboter = null;
    try {
        roboter = new Robot();
    } catch (AWTException e) {
        e.printStackTrace();
        OrbitRaider.log("Robot is not working.");
    }

    for(int x = 0; x <= bildschirm.getWidth(); x++)
    {
        for(int y = 0; y <= bildschirm.getHeight(); y++)
        {
            // Pixelfarbe bekommen
            pixelFarbe = roboter.getPixelColor(x, y);

            // Wenn Pixelfarbe gleich unserer Farbe
            if( (pixelFarbe.getRed() < (rot - toleranz)) || (pixelFarbe.getRed() > (rot + toleranz))
                && (pixelFarbe.getGreen() < (gruen - toleranz)) || (pixelFarbe.getGreen() > (gruen + toleranz)) 
                && (pixelFarbe.getBlue() < (blau - toleranz)) || (pixelFarbe.getBlue() > (blau + toleranz)) ){("Could not find Pixel Color");

            }

            else{
                System.out.println("Pixelcolor found at x: " + x + " y: " + y);
            }
        }
    }
4

1 回答 1

3

使用 Robot 类的createScreenCapture方法创建屏幕捕获可能要快得多,然后检查此 BufferedImage 的像素 - 而不是使用明显的 getRGB 方法(这也很慢,因为每个都发生了颜色空间转换调用),但要通过 BufferedImage 后面的 int 数组。

看到这个:Java - 从图像中获取像素数组

于 2013-10-30T16:19:46.077 回答