图像识别辅助处理系统权限弹框

背景

开测平台在用例脚本执行过程中,被测APP会遇到很多权限弹框,由于用例脚本很多时候依赖uiautomator工具,因此平台在执行用例过程中无法启动弹窗助手服务,这些权限弹框需要用例脚本自己做兼容。因为权限弹框(如图1所示)很多时候被点击的控件都是“允许”,平台尝试利用图像识别服务寻找被点控件坐标。

图1 权限弹框图

方案

目前系统权限框处理使用的是模板匹配和SIFT特征点匹配两种图像识别算法,依赖的底层库是python版的opencv。首先先简单介绍一些模板匹配和SIFT特征点匹配的工作原理。

模板匹配:

在目标图像上截取待识别的模板图像,以模板图像大小的矩形框在目标图像上从左到右、从上到下滑动,计算矩形框所在目标图像区域和模板图像的匹配度(匹配度的计算方法采用的是TM_CCOEFF_NORMED方法),得到匹配度图,然后使用minMaxLoc方法根据匹配度图得到匹配度最大的坐标,该坐标即模板在目标图像中的左上角坐标,最后根据左上角坐标和模板的宽高换算出模板在目标图像中的中心点坐标。

图2 模板匹配示意图

模板匹配是逐像素点匹配的,因此对模板的要求特别高,需和目标图像尺度、亮度等条件保持一致才能很好的匹配上。这一特性导致了模板匹配没有很好的泛化能力,不同型号手机分辨率的差异导致需要维护多个匹配模板,这无疑降低了用例任务执行过程中弹框处理的速度和稳定性。因此为了避免此类问题的发生,我们引入了SIFT特征点匹配方法,SIFT特征点 对旋转、尺度缩放、亮度变化保持不变性,可以很好的解决模板匹配问题。

SIFT特征点匹配:

对模板图像和目标图像构建各自尺度空间,提取出SIFT特征点和相应的128维描述子(结合周围像素点梯度信息生成的128维的向量,用于描述该特征点),然后利用knnMatch方法对模板图像和目标图像特征点进行匹配,接着对匹配的特征点对做单应性变换,将模板图像映射到目标图像上。最后根据映射的坐标换算出模板在目标图像上的中心坐标。

图3 SIFT特征点匹配

整个系统权限弹窗处理流程是手机端启动一个可以截图和点击的服务,任务执行端在收到用例任务时,启动权限弹框处理线程,不断的调用截图接口,将截图和模板图传给图像识别接口,图像识别接口返回匹配的中心点坐标,弹框处理线程调用手机端点击服务处理权限弹框。

思考

实际应用过程中,手机上弹框种类繁多,不同手机同一类弹框文案也有差异,例如权限弹框 A手机弹框文案是禁止、允许,B手机弹框文案可能是取消、同意,C手机弹框文案可能是禁止、始终允许……那如何做到真正智能的处理掉未知弹框呢?后续可以尝试的思路是首先利用图像识别等技术找到截图中弹框的位置区域,然后对该位置区域的弹框利用OCR文字识别技术,识别出弹框文本和文本的坐标位置,最后结合线上已有的云规则配置信息利用BERT等模型预测需要点击的文本信息,将文本的坐标位置返回,调用手机端点击服务点击弹框。

转载自开测


在这里留言哦


往期精彩回顾

WebGL工作流程解读,一个三角形的诞生

360技术中台招聘啦!!

实习招聘|360云平台火热招聘中

360技术公众号

技术干货|一手资讯|精彩活动

扫码关注我们

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值