Airtest的图像识别新算法“mstpl”的使用攻略

前言

在Airtest1.2.0版本,我们新增了1个图像识别的算法:mstpl。该算法在一定程度上可以提高我们图像识别的正确率。

另外,mstpl算法还有俩个特有的参数,分别是 scale_stepscale_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_stepscale_max 的值,修改完毕之后别忘记点击右下角的OK按钮来保存修改:

2)直接在脚本里修改

我们也可以在IDE的脚本编辑窗里,右键单击空白处,选择 图片/代码模式切换 ,切换到代码模式后,在图像脚本里面添加/修改 scale_stepscale_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” 的介绍就到这里啦,如果同学们对新算法还有其他疑问,或者对Airtest的图像识别算法有什么意见,欢迎反馈到我们的 issue-helper 网址上。


Airtest官网https://airtest.netease.com/
Airtest教程官网https://airtest.doc.io.netease.com/
搭建企业私有云服务https://airlab.163.com/b2b

官方答疑 Q 群:654700783

呀,这么认真都看到这里啦,帮忙点个推荐支持一下呗,灰常感谢~

原文地址:https://www.cnblogs.com/AirtestProject/p/15242620.html