出于测试目的,我正在构建一个点击屏幕上按钮的机器人。我有一个文件夹,其中包含所有可能需要按下的按钮,正在测试的应用程序一次只显示一个按钮。屏幕上不会出现两个或多个按钮的情况。
我的方法是每隔几秒拍摄一次屏幕截图,然后遍历所有可能的按钮并尝试在屏幕截图中找到它们。如果找到按钮,机器人会点击按钮的中心。
我的问题是,即使屏幕截图上没有按钮,我正在使用的模板算法在屏幕的某处返回误报。有没有办法确保除非图像上有按钮,否则不会返回误报?
我正在使用带有numpy和skimage的python。对于模板匹配,我使用的是skimage.feature.match_template。
我已经尝试过使用SIFT的opencv和所有那些没有太大成功的事情以及opencv本身的很多问题。
P.S。:如果您认为有更好的方法来解决问题本身(通过按下按钮测试应用程序),也欢迎它们。
干杯
修改1:
这些是图片:
编辑2:
脚本的输出(误报)
答案 0 :(得分:1)
正如我后来所了解到的,确保检测到的图像确实是您正在搜索的图像的唯一方法是计算检测到的图像与模板之间的差异,并使用阈值来避免不完美。