我希望能够检测到方形或圆形区域内的颜色(以较容易者为准)在我的鼠标指针附近。我的下面示例有效,但鼠标必须直接在颜色上才能检测到它。 在我的例子中,我只是简单地使用了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...
}
}
}
答案 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-window
和x+window
(以及类似的y)都在矩形的范围内。当然,请根据您的特定要求选择window
。