• Airtest的多图查找与两图对比


    此文章来源于项目官方公众号:“AirtestProject”
    版权声明:允许转载,但转载必须保留原链接;请勿用作商业或者非法用途

    1. 前言

    今天聊一下同学们经常问到的关于Airtest找图的2个问题,一个是,如何在Airtest里面做多图查找;另一个是,如何直接传入2张图片,然后计算他们的可信度。

    2. 多图查找:find_all

    这里的多图查找,指的是,一个画面中,存在多个相同/相似的图标,我们希望把他们都找出来,然后对所有的结果坐标进行操作。

    举个最常见的例子,消消乐:
    在这里插入图片描述
    假设我们的目标是,找到4个小黄鸡的坐标,然后对它逐一进行点击,那我们就可以使用Airtest提供的API,find_all 来完成:
    在这里插入图片描述

    # -*- encoding=utf8 -*-
    __author__ = "AirtestProject"
    
    from airtest.core.api import *
    auto_setup(__file__)
    
    results= find_all(Template(r"tpl1662624311911.png", record_pos=(-0.002, -0.178), resolution=(1080, 2520)))
    print("--------------------------------")
    print(results)
    
    for i in range(0,4):
        touch(results[i]['result'])
        sleep(1.0)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    find_all 给我们返回的结果是一个列表,列表里面包含了识别结果的字典,从字典的 result 键值中,我们可以拿到我们想要的坐标信息:

    [{'result': (538, 1423), 'rectangle': ((490, 1363), (490, 1483), (587, 1483), (587, 1363)), 'confidence': 0.9852163195610046}, 
    {'result': (301, 1186), 'rectangle': ((253, 1126), (253, 1246), (350, 1246), (350, 1126)), 'confidence': 0.9825006723403931}, 
    {'result': (775, 1186), 'rectangle': ((727, 1126), (727, 1246), (824, 1246), (824, 1126)), 'confidence': 0.9197724461555481}, 
    {'result': (249, 1894), 'rectangle': ((201, 1834), (201, 1954), (298, 1954), (298, 1834)), 'confidence': 0.7261688709259033}]
    
    • 1
    • 2
    • 3
    • 4

    3. 两图对比

    有部分特殊场景,我们需要对比截取好的2张图片的相似度,这时候我们可以用Airtest提供的 cal_ccoeff_confidence 方法:

    在这里插入图片描述

    # -*- encoding=utf8 -*-
    __author__ = "AirtestProject"
    
    from airtest.core.api import *
    from airtest.aircv.cal_confidence import *
    
    auto_setup(__file__)
    
    img1 = cv2.resize(cv2.imread(r"frog.png"),(85,100))
    img2 = cv2.resize(cv2.imread(r"chick.png"),(85,100))
    
    confidence = cal_ccoeff_confidence(img1,img2)
    
    print("----------------")
    print(confidence)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15

    其中:

    • cv2.resize 用于统一图片尺寸,上图中的(85,100)为我们指定的目标尺寸
    • cv2.imread用于读取本地路径下的图片
    • cal_ccoeff_confidence用于对比两张图片的相似度,返回可信度的值

    4. 小结

    那今天的推文我们就简单聊了2个Airtest关于找图和图片对比的API,其实关于多图查找还有两图对比,Airtest还给我们提供了更多的方式,感兴趣的同学可以关注我们后续的推文~


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

    官方答疑 Q 群:117973773

    呀,这么认真都看到这里啦,帮忙点个赞或者收藏支持下我把,灰常感谢~

  • 相关阅读:
    [4G/5G/6G专题基础-160]: BLER与MCS的关系
    论文分享|Arxiv2024‘复旦|如何让LLM说不?
    JavaCV音视频开发宝典:rtsp转推到rtp(非TS流方式),及使用TS流发送解决sdp缺失问题
    P4727 [HNOI2009] 图的同构计数
    简单快速理解常用的正则表达式
    6.紧耦合和松耦合有什么区别?
    参数校验工具类BeanValidator
    别再乱看教程了!从源码剖析JVM类加载机制,打通双亲委派机制!
    kotlin coroutine源码解析之coroutineContext篇
    java计算机毕业设计家装行业门店订单管理系统源码+mysql数据库+系统+lw文档+部署
  • 原文地址:https://blog.csdn.net/AirtestProject/article/details/126829920