前言
在Airtest1.2.0版本,我们新增了1个图像识别的算法:mstpl。该算法在一定程度上可以提高我们图像识别的正确率。
另外,mstpl算法还有俩个特有的参数,分别是 scale_step
和 scale_max
。那么今天我们就来聊一聊这俩个参数是如何调节的。
1. 如何调节 scale_step
scale_step
用于控制搜索比例步长,它代表匹配时搜索的精细程度。进行图像匹配时,会在原始截图的一定缩放范围内以截图最长边 * scale_step
的步长进行搜索。默认值0.01,取值范围 [0.001, 0.1],推荐值 0.02, 0.005, 0.001。
通常该值不需要调整,当出现跨分辨率匹配(特别是匹配较小截图)无法匹配到时可以尝试减小它。不过减小它会大幅增加匹配时间。
举个例子,我们在进行如下所示的图像识别时:
会发现当 scale_step=0.01
时是识别不到的:
而当 scale_step=0.005
的时候,又可以识别成功:
2. 如何调节 scale_max
scale_max
用于调节匹配的最大范围,默认值800, 取值范围 [700 , 2000],推荐值 740, 800, 1000。
考虑到匹配性能mstpl在开始匹配之前会将截屏大小限制一个最大值,比如,截屏为(699, 1964) ,scale_max=1000
,那么在匹配前截屏会被 resize
为(356,1000)。
理论上 scale_max
越小速度越快,但也会有匹配不到较小的UI风险。不过由于提前退出机制,scale_max
较大时匹配较小的UI也可能出现更快的情况。
使用中,如果遇到截图非常小匹配不到,可以尝试调大 scale_max
。
举个例子,我们在进行如下所示的图像识别时:
会发现当 scale_max=1000
时是识别不到的:
而当 scale_max=1100
的时候,又可以识别成功:
3. 在哪里修改这俩个参数的值
1)通过图像编辑器修改
我们可以在IDE中双击该图片打开图像编辑器,在右侧的参数表格中,修改 scale_step
和 scale_max
的值,修改完毕之后别忘记点击右下角的OK按钮来保存修改:
2)直接在脚本里修改
我们也可以在IDE的脚本编辑窗里,右键单击空白处,选择 图片/代码模式切换
,切换到代码模式后,在图像脚本里面添加/修改 scale_step
和 scale_max
的值:
touch(Template(r"tpl1631007320263.png", scale_max=1100, scale_step=0.005)) 复制代码
3)修改Airtest使用的图像识别算法
有时候,我们想根据自己项目的需求来修改Airtest使用的图像识别算法,比如调整Airtest图像识别算法的使用顺序,或者指定仅使用其中某一个算法:
from airtest.core.settings import Settings as ST # 调整Airtest图像识别算法的使用顺序 ST.CVSTRATEGY = ["mstpl","tpl", "sift","brisk"] # 指定仅使用mstpl算法 ST.CVSTRATEGY = ["mstpl"] 复制代码
小结
那么今天关于新算法 “mstpl” 的介绍就到这里啦