Airtest的多图查找与两图对比

简介: Airtest的多图查找与两图对比

此文章来源于项目官方公众号:“AirtestProject”

版权声明:允许转载,但转载必须保留原链接;请勿用作商业或者非法用途

1. 前言

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

2. 多图查找:find_all

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

举个最常见的例子,消消乐:

image.png

假设我们的目标是,找到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)

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}]

3. 两图对比

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

image.png

# -*- 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)

其中:

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

4. 小结

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


AirtestIDE下载:airtest.netease.com/

Airtest 教程官网:airtest.doc.io.netease.com/

搭建企业私有云服务:airlab.163.com/b2b


相关文章
|
Shell
VBS控制鼠标移动和点击(附源代码下载)
森思:想用vbs来控制鼠标的移动和点击,虽然按键精灵可以做到,但做这么简单的事情不想启动那么大一个程序,所以自己用VC写了一个小程序,可以让VBS来控制鼠标移动和点击。 用法: 移动鼠标到桌面坐标200,50的vbs命令如下: CreateObject("WScript.
4634 0
|
4月前
|
存储 人工智能 NoSQL
基于 Tablestore 的 Agent Memory 框架
本文介绍了AI Agent对存储能力的挑战,尤其是Memory和Knowledge两类核心需求。为应对这些挑战,基于阿里云Tablestore提出了一种轻量化的Agent Memory框架设计,支持实时记忆存储与语义检索等场景。该框架已在多个实际业务中落地,如通义App、某头部浏览器的AI搜索及1688商品AI搜索等,验证了其高性能、高扩展性和低成本优势。未来将继续增强多模态与用户行为分析能力,并与主流AI框架共建生态。
955 2
|
计算机视觉 Python
Python实用记录(一):如何将不同类型视频按关键帧提取并保存图片,实现图片裁剪功能
这篇文章介绍了如何使用Python和OpenCV库从不同格式的视频文件中按关键帧提取图片,并展示了图片裁剪的方法。
514 0
|
11月前
|
存储 数据挖掘 数据处理
掌握Pandas核心数据结构:Series与DataFrame的四种创建方式
本文介绍了 Pandas 库中核心数据结构 Series 和 DataFrame 的四种创建方法,包括从列表、字典、标量和 NumPy 数组创建 Series,以及从字典、列表的列表、NumPy 数组和 Series 字典创建 DataFrame,通过示例详细说明了每种创建方式的具体应用。
858 67
|
9月前
|
算法 测试技术 Swift
Kimi开源Moonlight-16B-A3B:基于Muon优化器的高效大模型,性能与效率双突破!
最近,Muon优化器在训练小规模语言模型方面展示了强大的效果,但其在大规模模型上的可扩展性尚未得到验证。
523 0
|
编译器 Android开发 开发者
带你了解Android Jetpack库中的依赖注入框架:Hilt
本文介绍了Hilt,这是Google为Android开发的依赖注入框架,基于Dagger构建,旨在简化依赖注入过程。Hilt通过自动化的组件和注解减少了DI的样板代码,提高了应用的可测试性和可维护性。文章详细讲解了Hilt的主要概念、基本用法及原理,帮助开发者更好地理解和应用Hilt。
538 8
|
Linux C++
/lib64/libstdc++.so.6: version `GLIBCXX_3.4.20' not found问题解决方法
/lib64/libstdc++.so.6: version `GLIBCXX_3.4.20' not found问题解决方法
3357 0
|
弹性计算 固态存储 数据可视化
阿里云服务器价格表(收费标准报价)
阿里云ECS云服务器价格是用户关心的,新手站长来说说阿里云服务器官方报价及优惠折扣后的价格,详细如下: 阿里云服务器价格组成 新手站长先介绍云服务器官方报价(包括按量付费和包年包月的价格),然后再分享优惠活动中云服务器优惠价格。
50820 0
|
Java Spring 容器
循环依赖难破解?Spring Boot神秘武器@RequiredArgsConstructor与@Lazy大显神通!
【8月更文挑战第29天】在Spring Boot应用中,循环依赖是一个常见问题。当两个或多个Bean相互依赖形成闭环时,Spring容器会陷入死循环。本文通过对比@RequiredArgsConstructor和@Lazy注解,探讨它们如何解决循环依赖问题。**@RequiredArgsConstructor**:通过Lombok生成包含final字段的构造函数,优先通过构造函数注入依赖,简化代码但可能导致构造函数复杂。**@Lazy**:延迟Bean的初始化,直到首次使用,打破创建顺序依赖,增加灵活性但可能影响性能。根据具体场景选择合适方案可有效解决循环依赖问题。
510 0
|
机器学习/深度学习 并行计算 安全
ImportError: DLL load failed while importing libpaddle: 找不到指定的模块。问题处理
【5月更文挑战第12天】ImportError: DLL load failed while importing libpaddle: 找不到指定的模块。问题处理
3367 0
下一篇
oss云网关配置