检测光标附近区域内的颜色

时间:2015-02-17 16:06:05

标签: java

我希望能够检测到方形或圆形区域内的颜色(以较容易者为准)在我的鼠标指针附近。我的下面示例有效,但鼠标必须直接在颜色上才能检测到它。 在我的例子中,我只是简单地使用了MS Paint标准红色,但是当我的光标让我们说目标颜色的左上方或下方100像素时,我希望检测渐变区域中的特定颜色,它会检测到它。我想我需要在光标当前位置周围的像素范围内循环,但我似乎无法得到它。 添加到我的代码确实会有所帮助,因为我已经在这个网站上花了太多时间,而其他人则在尝试创意。

谢谢!

import java.awt.Color;

import java.awt.MouseInfo;

import java.awt.Point;

import java.awt.PointerInfo;

import java.awt.Robot;

public class DetectRed {

public static void main(String[] args) throws Exception {

PointerInfo pointer;

pointer = MouseInfo.getPointerInfo();

Point coord = pointer.getLocation();

        Robot robot = new Robot();
        robot.delay(2000);

        while(true)
        {
            //print coords
            coord = MouseInfo.getPointerInfo().getLocation();
            System.out.println("Coord = " + coord);

            //print colors
            Color color = robot.getPixelColor((int)coord.getX(), (int)coord.getY());
            System.out.println("Color = " + color);

            if(color.getRed() == 237 && color.getGreen() == 28 && color.getBlue() == 36)
            {
                System.out.println("RED(237,28,36) FOUND");
            }

            System.out.println(); //blank line separator

            robot.delay(500); //use shorter delay to scan faster...
        }
    }
}

1 个答案:

答案 0 :(得分:1)

在for循环中包裹颜色检测以扫描邻域:

for (int x = (int)coord.getX()-window; x <= (int)coord.getX()+window; ++x) {
  for (int y = (int)coord.getY()-window; y <= (int)coord.getY()+window; ++y) {
    Color color = robot.getPixelColor(x, y);
    // Check if it matches.
  }
}

您可能希望进行一些边界检查,以确保x-windowx+window(以及类似的y)都在矩形的范围内。当然,请根据您的特定要求选择window