Airtest 指定点击页面中相同的按键
2022/2/19 23:18:31
本文主要是介绍Airtest 指定点击页面中相同的按键,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
需求:当一个页面存在多个相同的按键,通过图像识别的方式点击指定的按键
思路:
1.每次匹配到按键的区域后将区域从源图像中去掉
2.根据按键与左上角 (0,0) 的长度对按键进行排序
(忽略长度相同的情况,可换其他角的坐标计算解决)
source.jpg
match.jpg
from PIL import Image import numpy from airtest.core.cv import Template from airtest import aircv from airtest.core.helper import G from airtest.utils.transform import TargetPos import time from math import sqrt class Template2(Template): def __int__(self,*args, **kwargs): super.__init__(*args, **kwargs) #重写match_in,return加上识别到的区域(match_result) def match_in(self, screen): match_result = self._cv_match(screen) G.LOGGING.debug("match result: %s", match_result) if not match_result: return None focus_pos = TargetPos().getXY(match_result, self.target_pos) return focus_pos,match_result def p(search,source,total,index): """ :param search: 匹配图像 :param source: 源图像 :param total: 相同图像总数 :param index: 匹配索引 :return: 匹配坐标 """ result = [] source_array=numpy.array(Image.open(source)) t = time.time() for i in range(total): im_search = Template2(search) im_source = aircv.imread(source) pos,match = im_search.match_in(im_source) #匹配坐标和匹配区域 array = numpy.array(Image.open(source))#创建矩阵 #将区域填充为白色 for col in range(match['rectangle'][0][0],match['rectangle'][-1][0]): for row in range(match['rectangle'][0][1],match['rectangle'][1][1]): array[row,col] = [255,255,255] Image.fromarray(array).save(source)#更新源图像 result.append(pos) result.sort(key= lambda x: sqrt(x[0]*x[0]+x[1]*x[1]))#根据距离(0,0)排序 print(time.time() - t) print(result) Image.fromarray(source_array).save(source) return result[index] print(p('./search.jpg','./source.jpg',10,0))
#输出 0.0870201587677002 [(112, 63), (112, 119), (160, 63), (160, 119), (208, 63), (208, 119), (256, 63), (256, 119), (304, 63), (304, 119)] (112, 63)
这篇关于Airtest 指定点击页面中相同的按键的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-12-22程序员出海做 AI 工具:如何用 similarweb 找到最佳流量渠道?
- 2024-12-20自建AI入门:生成模型介绍——GAN和VAE浅析
- 2024-12-20游戏引擎的进化史——从手工编码到超真实画面和人工智能
- 2024-12-20利用大型语言模型构建文本中的知识图谱:从文本到结构化数据的转换指南
- 2024-12-20揭秘百年人工智能:从深度学习到可解释AI
- 2024-12-20复杂RAG(检索增强生成)的入门介绍
- 2024-12-20基于大型语言模型的积木堆叠任务研究
- 2024-12-20从原型到生产:提升大型语言模型准确性的实战经验
- 2024-12-20啥是大模型1
- 2024-12-20英特尔的 Lunar Lake 计划:一场未竟的承诺