【发布时间】:2014-11-19 16:37:15
【问题描述】:
出于测试目的,我正在构建一个点击屏幕上按钮的机器人。我有一个文件夹,其中包含所有可能需要按下的按钮,并且正在测试的应用程序一次只显示一个按钮。不会出现两个或多个按钮同时出现在屏幕上的情况。
我的方法是每隔几秒钟截取一次屏幕截图,然后遍历所有可能的按钮,然后尝试在屏幕截图上找到它们。如果找到按钮,机器人会点击按钮的中心。
我的问题是,即使屏幕截图上没有按钮,我使用的模板算法也会在屏幕的某处返回误报。有什么方法可以确保不返回误报,除非图片上存在按钮?
我正在使用带有 numpy 和 skimage 的 python。对于模板匹配,我使用的是 skimage.feature.match_template。
我已经尝试过使用 SIFT 的 opencv 以及所有那些没有太大成功且 opencv 本身存在很多问题的方法。
P.S.:如果您认为有更好的方法来解决问题本身(通过按下按钮测试应用程序),也欢迎他们。
干杯
编辑 1:
这些是图片:
编辑 2:
脚本的输出(误报)
【问题讨论】:
-
能否请您添加示例图片,尤其是误报
-
@canberk 刚刚添加了它们。还添加了我的脚本的输出和误报。
-
我现在尝试的想法是将按钮图像与屏幕截图中的可疑区域进行比较并计算曼哈顿范数,如果图像差异太大,则得分会高低很相似。这样我也许能够检测到误报。
标签: python numpy template-matching