button的匹配问题
你的功能请求是否与问题有关?
#3557 让我对基于平均颜色的匹配产生怀疑
一个页面有时需要识别几十个按钮,因此测试100次识别所需时间,使用perf_counter()计时:
start = time.perf_counter()
for _ in range(100):
BUTTON.appear_on(image)
end = time.perf_counter()
print(end - start)
start = time.perf_counter()
for _ in range(100):
BUTTON.match(image, offset=(0, 0))
end = time.perf_counter()
print(end - start)
- 小按钮
GET_SHIP:appear_on用时约1.5ms,match用时约6.5ms - 中按钮
EXERCISE_PREPARATION:appear_on用时约2ms,match用时约34ms - 大按钮
DAILY_ENTER:appear_on用时约7.5ms,match用时约436ms
根据这个测试结果,我认为对于固定位置的按钮,也应该主要使用Template Matching在图像中查找对象,这应该不会明显影响运行时间。仅在少数情况下使用平均颜色匹配
由于我考虑的范围非常局限,衷心希望开发者解答一下,为什么目前在绝大多数情况下使用平均颜色匹配,这是基于什么考量?
解决方案
No response
其他内容
No response
还有appear_on是否期望仅用于匹配完全相同的情况,如果是那好像threshold设为2就可以覆盖精度带来的差异,如果要考虑背景颜色略有不同等情况,那threshold完全就是trade-off,感觉不如多用match
你自己都测试出来性能差了快100倍了,这也叫无影响吗?就是性能优化啊,有的脚本开着就吃10%~20%的cpu,alas只占的cpu基本<1%,运行速度还快,这就是狠抓优化的结果
颜色识别是照搬 PhotoShop 的魔棒,color_similar() 就是魔棒的算法,threshold 就是魔棒的容差设置
但文档中不是说截图耗时约350ms(我自己没测),34ms对于截图耗时也就是一个小量,对于小图片真有必要提高这一点速度而舍弃准确度吗?还是说一般处理方式是出现问题再调?
现在的截图好像只需100ms左右,那确实要克制一点,不过真有那么多一个页面需要识别上百个按钮的情况?
最新的截图速度可低至10ms左右,这点准确度还是应该被牺牲掉(只要没有频繁出现问题)