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 メソッドを使用するのではありません (これも、それぞれで発生する色空間変換のために非常に遅くなります)。 call)、BufferedImage の背後にある int 配列を通過します。

これを参照してください:Java - 画像からピクセル配列を取得

于 2013-10-30T16:19:46.077 に答える