Java - 截图不刷新,导致颜色识别失败

问题描述 投票:0回答:0

我正在创建一个在我的世界中充当自动农夫的程序。它检查两个像素是否是肥料堆栈的第 10 位中的文本颜色,看是否有 >10 个肥料,然后执行(最多使用 8 个),它不能使用所有肥料,否则肥料堆栈将被替换庄稼。在开始主循环后,它不会更新它扫描像素的图像,直到我按 alt-tab。我一直在尝试找出导致此问题收效甚微的确切问题。

这是Java代码

public static void main(String[] args) throws AWTException {
    Robot robot = new Robot();

    while(true){
        Rectangle screenRect = new Rectangle(Toolkit.getDefaultToolkit().getScreenSize());
        BufferedImage image = robot.createScreenCapture(screenRect);
        Color color1 = new Color(image.getRGB(841, 1073));
        Color color2 = new Color(image.getRGB(842, 1073));
        if (color1.equals(new Color(0xFCFCFC)) || color2.equals(new Color(0xFCFCFC))) {
            System.out.println("Executing");
            Execute();
            Execute();
        } else {
            System.out.println("F");
        }
        
    }
}}

我试过:

  • 读取屏幕的不同方法 (robot.getPixelColor(x, y))
  • 用 python 重写代码(a - 太慢,b - 出现同样的问题)
  • 不同的像素颜色比较系统

我尝试过的其他解决方案:

  • 使用 OCR 软件(Tesseract,我花了两个小时试图让导入工作但没有成功,然后才放弃)
  • 用数学来估计我有多少肥料(我根据概率得到它,这个can超限,导致我清空堆栈,这会导致过程失败)
java image-processing screenshot awtrobot
© www.soinside.com 2019 - 2024. All rights reserved.