如何获得子图像坐标?

时间:2017-11-12 11:35:13

标签: java algorithm image-processing image-manipulation

我有一个屏幕截图,我需要找到按钮中心的坐标(大约)。 *.png格式的屏幕截图和示例按钮。我假设有一个带有此签名的方法:

public Coordinate getBtnCoordinate(BufferedImage src, BufferedImage dst) {
    ...
}

@Data
class Coordinate {
    private int x;
    private int y;
}

将来会以这种方式使用:

Coordinate сoordinate = getBtnCoordinates(...);
Robot robot = new Robot();
robot.mouseMove(сoordinate.getX(), сoordinate. getY());
robot.mousePress(InputEvent.BUTTON1_MASK);

但我实施getBtnCoordinates的尝试几乎不会导致任何事情发生一周((。请帮助我实施此方法。我将不胜感激任何帮助。

1 个答案:

答案 0 :(得分:0)

实现取决于搜索到的按钮是否与其中一个示例图像完全匹配,或者是否需要找到"类似的"按钮,这可能要困难得多。

如果搜索完全匹配,则可以扫描屏幕截图中的像素或与按钮中给定位置的像素颜色匹配。找到匹配的像素后,比较其他像素,直到不匹配太多或整个按钮匹配为止。

如果屏幕截图在感兴趣的区域中有单一颜色背景,您可以使用分段,即首先找到包含内容的矩形区域,然后仅将这些区域与示例按钮进行比较。

如果按钮的大小可能不同,您可能希望将按钮本身分为内容以及顶部,左侧,右侧和底部边框,以便能够进行部分匹配。

如果匹配需要非常模糊,您可能需要更高级的技术,例如:使用机器学习来训练示例按钮的模型。

如果没有针对您的案例查看典型的示例屏幕截图和按钮,很难为此问题提供更具体的建议。