は、ここで私は、スクリーンショットを取るために書いたクラスです:Robot.createScreenCaptureが色を変えている
public class imagemanipulation {
Dimension screenResolution;
Rectangle screenRectangle;
Robot robot;
imagemanipulation() {
try {
screenResolution = Toolkit.getDefaultToolkit().getScreenSize();
screenRectangle = new Rectangle(screenResolution);
robot = new Robot();
} catch (AWTException ex) {
Logger.getLogger(imagemanipulation.class.getName()).log(Level.SEVERE, null, ex);
}
}
public BufferedImage newScreenshot() {
BufferedImage image = robot.createScreenCapture(screenRectangle);
return image;
}
}
私は上から見た画面のスクリーンショットの両方にBufferedImagewhatever.getRGB(x,y)
を使用していること、そしてそれの座標にしています別のイメージの一部を返し、一致が見つかったxとyの位置を返します。これは、白黒画像には効果的ですが、色付きではありません。私が抱えている問題は、createScreenCapture
がスクリーンショットのRGBカラーを元のものから変更していることです。そのため、createScreenCapture
で撮影した画像を別の画像と比較すると、決してうまく動作しません。
私はcreateScreenCapture
がより効率的であるようにスクリーンショットで色の量を減らさなければならないと思っていますが、それをやめさせる方法はありますか?
*「スクリーンショットのRGBカラーを元のものから変更する」*「もともと」とはどういう意味ですか?どのソフトウェアが元の画像を生成しますか?それが 'Robot 'でもあれば、どのような最適化を行っても実行していなくても、さまざまな呼び出しで一定であると推測できます。 「Robot」で行われた2つのスクリーンショットの間に、「変更された領域」(たとえば、GUIが1つに表示される)を検出するソフトウェアを作成しました。 –
私の問題は、ロボットがキャプチャした画像が正しい色の値を失っているように見えるということです。ロボットを使って撮影した画像の色は、やや歪んでいるので、この変色によって他の画像と比較することはできません。なぜ私はロボットがこれをやっているのか分かりません。 – Macmee
その言葉の中で、私は何のソフトウェアが元のイメージを生成するかについての答えは表示されませんか?** –