我将以 Windows 中计算器应用程序的 GUI 为例进行解释。鉴于此计算器应用程序已打开且集中,我需要找到一种检测所有按钮的方法。我只能使用非侵入性方法,因此按钮 ID 之类的东西是不可能的。这导致我进行图像识别。或者更好地说是图像检测,因为我不想要一个特定的图像,而是一组遵循某种模式的图像。我知道如何使用给定的按钮图像和图像识别来单击/右键单击/dbl-click/etc [1]。我不知道如何反过来:扫描 GUI 并找到那些满足按钮要求的区域(矩形、文本/图标/图形标记等)。更大的解决方法是检测没有矩形形状的项目(例如 Windows 桌面上的图标)
最接近我需要的是检测图片中的人脸。 [2] 但我不知道如何在我的情况下应用它。对于人脸检测,我看到在 Haar 级联生成中必须使用数百张人脸图片(不知道我将如何使用仅 10-15 个按钮快照来做到这一点)。如果必须检测另一种对象(例如苹果),则需要使用大量图像再次为该对象生成 Haar 级联。
你们有没有人尝试过仅使用模式检测来检测 GUI 中的按钮、项目或其他任何东西?我只需要一些东西来告诉我“这是一个图标/按钮”,这样我就可以在快照中抓取该区域。
[1] 我使用 SikuliX 和 Python 对给定模式执行操作。
[2] 我看到使用 OpenCV 和 Haar 级联(XML 格式)很容易做到这一点。创建 Haar 级联需要一点耐心和技巧。