Java中的快速像素搜索

时间:2013-10-30 16:10:18

标签: java performance search optimization pixel

我对java中的像素搜索有疑问。 目前,我的Class / Programm正逐像素地搜索,以减慢我的目的。 我不想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);
            }
        }
    }

1 个答案:

答案 0 :(得分:2)

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

请参阅:Java - get pixel array from image