opencv实现元素的图片坐标定位

桌面应用程序的UI自动化,除了解析应用层级控件外,还可以通过图片定位获取目标元素位置,对其进行点击、双击、滚动等操作。
python可用opencv库操作图片。

opencv安装

  • sudo apt install python-opencv

图片比对

import cv2
import pyautoguidef match_img(small_image, big_image=None, confidence_value=0.9):"""small_image: 目标图片的路径big_image: 需要匹配的图片,在大图中去匹配目标图片confidence_value: 匹配度,0-1"""# 屏幕截图screen = pyautogui.screenshot()screen.save('/tmp/screen.png')# 获取屏幕截图数组信息screen_array = cv2.imread('/tmp/screen.png')if big_image:# 获取大图的数组信息big_img_array = cv2.imread('/tmp/screen.png')# 先获取大图在屏幕中的位置res = cv2.matchTemplate(screen_array, big_img_array, cv2.TM_CCOEFF_NORMED)# 从一个矩阵中找出全局的最大值和最小值minmax = cv2.minMaxLoc(res)# 取匹配度最大的坐标,这个也代表了大图的顶点坐标pos_start_big = minmax[3]else:# 如果没有传入大图,则用屏幕截图当做大图big_img_array = screen_arraypos_start_big = [0, 0]# 获取目标图片的数组信息small_img_array = cv2.imread(small_image)# 调用matchTemplate方法进行匹配,cv.TM_CCOEFF_NORMED是匹配的方法:该方法使用归一化的平方差进行匹配,最佳匹配在结果为0处res = cv2.matchTemplate(big_img_array, small_img_array, cv2.TM_CCOEFF_NORMED)# 从一个矩阵中找出全局的最大值和最小值minmax = cv2.minMaxLoc(res)# 取匹配度最大的坐标,注意这是相对大图的顶点坐标pos_start = minmax[3]# 匹配对象的中心坐标x y,这里获取的是绝对坐标x = int(pos_start_big[0] + pos_start[0]) + int(small_img_array.shape[1] / 2)y = int(pos_start_big[1] + pos_start[1]) + int(small_img_array.shape[0] / 2)# 取最大的匹配度值similarity = minmax[1]# 如果匹配度不满足条件,直接返回空if similarity < confidence_value:return None# 否则返回目标图片的中心位置return x, y# 调用方法
res = match_img('./img.png', './img_1.png', confidence_value=0.9)
# 通过鼠标移动验证获取的图片位置正确
pyautogui.moveTo(res[0], res[1])

以上代码实现了一个图片匹配方法,返回匹配到的图片坐标。有2种使用方式:

  1. 直接传入目标图片,这样会在整个屏幕截图中查找目标图片;
  2. 在一张大图中匹配目标图片,返回的也是目标图片的绝对坐标位置;

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

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

相关文章

Datawhale AI 冬令营(第一期)定制你的第一个专属模型-学习笔记

最近我报名参加了Datawhale组织的主题为“动手学系列&#xff0c;人人都能应用的AI”的Datawhale AI冬令营&#xff08;第一期&#xff09;。 本次学习一共12天&#xff0c;从12月10日-12月21日&#xff0c;学习会包含【跑通速通手册】&#xff0c;【学习大模型微调&数据集…

异常安全重启运行机制:健壮的Ai模型训练自动化

文章目录 前言一、热力图主函数代码1、正规N图热力图运行代码2、重新迭代循环求解方法 二、中断重启继续推理或训练1、封装含参主函数2、终止重启进程管理方法1、终止启动源码2、源码解读 三、终止启动主函数源码解读1、终止启动源码2、源码解读关键点解析 四、完整代码Demo1、…

Spring项目中常用的配置(含yml和properties)

MyBatis和数据库配置相关 yml&#xff1a; spring:application:name: Test # Spring项目名称,记得修改datasource:url: jdbc:mysql://127.0.0.1:3306/test?characterEncodingutf8&useSSLfalse # test为数据库名,记得修改username: root # 数据库用户名,记得修改password…

Redis01

springbootredis 特点 1.高效性 2.支持多种数据结构 String,list,set,hash.zset 3.稳定性&#xff1a;持久化&#xff0c;主从复制&#xff08;集群&#xff09; 4.其他特性&#xff1a;支持过期时间&#xff0c;支持事务&#xff0c;消息订阅。 安装 1.下载安装包 redis官…

【Unity】Amplify Shader Editor

Amplify Shader Editor (ASE) Amplify Shader Editor&#xff0c;是一个功能强大的基于节点的着色器开发工具&#xff0c;允许开发者在 Unity 中轻松创建和管理复杂的 Shader。 主要功能和特点 基于节点的编辑器&#xff1a; • 提供直观的可视化界面&#xff0c;减少手写 Sh…

Elasticsearch使用(2):docker安装es、基础操作、mapping映射

1 安装es 1.1 拉取镜像 docker pull swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/library/elasticsearch:7.17.3 1.2 运行容器 运行elasticsearch容器&#xff0c;挂载的目录给更高的权限&#xff0c;否则可能会因为目录权限问题导致启动失败&#xff1a; docker r…

scroll-view 实现滑动显示,确保超出正常显示,小程序app,h5兼容

在uniapp 开开发的项目中&#xff0c;滑动操作是很多的 1.在插件市场使用了几款插件&#xff0c;但是都不太好用&#xff0c;要么是 显示的tab 过多&#xff0c;滑动到最后一个&#xff0c;当前显示那个跑左边显示不全&#xff0c;要么是滑动到最后一个后面的无法自动滑动&…

SpringBoot Maven快速上手

文章目录 一、Maven 1.1 Maven 简介&#xff1a;1.2 Maven 的核心功能&#xff1a; 1.2.1 项目构建&#xff1a;1.2.2 依赖管理&#xff1a; 1.3 Maven 仓库&#xff1a; 1.3.1 本地仓库&#xff1a;1.3.2 中央仓库&#xff1a;1.3.3 私服&#xff1a; 二、第一个 SpringBoot…

funcaptcha 验证码逆向协议通过,算法实现

声明 本文章中所有内容仅供学习交流&#xff0c;抓包内容、敏感网址、数据接口均已做脱敏处理&#xff0c;严禁用于商业用途和非法用途&#xff0c;否则由此产生的一切后果均与作者无关&#xff0c;若有侵权&#xff0c;请联系我立即删除&#xff01;

【C语言】浮点数的原理、整型如何转换成浮点数

众所周知C语言中浮点数占四个字节&#xff0c;无论在32位或者64位机器上。不免会发出疑问四个字节是怎么计算出小数的呢&#xff1f;其实物理存放还是按照整型存放的。 IEEE 754 单精度浮点数格式 浮点数在计算机中是使用 IEEE 754 标准进行表示的。在 IEEE 754 标准中&#…

善于运用指针--函数与指针

文章目录 前言一、函数的指针二、函数指针运用 1函数名地址2指针变量调用函数3指向函数的指针变量做函数参数二、返回指针值的函数总结 前言 如果在程序中定义了一个函数&#xff0c;在编译时会把函数的源代码转换为可执行代码并分配一段空间。这段空间有一个起始地址&#xf…

美图撕掉蔡文胜标签

卖掉比特币的美图不投机了。 作者|周立青 编辑|杨舟 12月5日&#xff0c;比特币突破10万美元大关&#xff0c;曾花费1亿美元购入虚拟货币的美图宣布已出售所有加密货币。 美图在港交所发布公告称&#xff0c;自2024年11月起&#xff0c;公司已开始出售其持有的加密货币&…

图片底部空白缝隙解决法方案(CSS)

当我想实现一个垂直轮播图时&#xff0c;图片底部会出现一个空白缝隙导致切换轮播图片显示不完整。 这里可以用两个方法解决 一、给图片添加(垂直对齐)vertical-align:baseline|middle|top; vertical-align属性的值可以是 &#xff08;1&#xff09;关键字值:baseline|midd…

win11 恢复任务栏copilot图标, 亲测有效

1、修改C:\Windows\System32\IntegratedServicesRegionPolicySet.json&#xff0c;解除中国不能使用copilot的限制。 使用Notepad搜索copilot全文搜索&#xff0c;将下面两处的“CN,”删除&#xff0c;删除后如下&#xff1a; {"$comment": "Show Copilot on t…

计算机相关知识

前言 提醒&#xff1a; 文章内容为方便作者自己后日复习与查阅而进行的书写与发布&#xff0c;其中引用内容都会使用链接表明出处&#xff08;如有侵权问题&#xff0c;请及时联系&#xff09;。 其中内容多为一次书写&#xff0c;缺少检查与订正&#xff0c;如有问题或其他拓展…

鹦鹉的饮食偏好:探索多彩的食物世界

鹦鹉&#xff0c;作为聪明且迷人的鸟类&#xff0c;其饮食习性一直是鸟类爱好者关注的焦点。了解鹦鹉喜欢吃什么食物&#xff0c;对于确保它们的健康与幸福至关重要。 鹦鹉的食物种类丰富多样&#xff0c;首先是各类种子与谷物。例如&#xff0c;葵花籽富含脂肪和蛋白质&#…

2021 年 12 月青少年软编等考 C 语言四级真题解析

目录 T1. 移动路线思路分析T2. 移动办公思路分析T3. 最长公共子上升序列思路分析T4. 技能树思路分析T1. 移动路线 桌子上有一个 m m m 行 n n n 列的方格矩阵,将每个方格用坐标表示,行坐标从下到上依次递增,列坐标从左至右依次递增,左下角方格的坐标为 ( 1 , 1 ) (1,1)…

番外篇 | YOLO-ELA:高效的局部注意力建模,用于高性能实时缺陷检测 !

前言:Hello大家好,我是小哥谈。现有的从无人机(UAV)上进行的绝缘子缺陷识别方法在处理复杂背景场景和小型物体时,准确率较低且存在较多的假阳性检测。为解决这一问题,本文提出了一种基于局部注意力建模的新注意力基础架构,即YOLO-ELA。在YOLOv8的一阶段架构的Neck部分添…

自然语言处理和大语言模型综述(12.2-12.8)

目录 0 前言 1 NLP是什么 2 LLMs是什么 3 NLP和LLMs的发展 3.1 单词和句子向量 3.2 无监督预训练 3.3 预训练的Transformer 3.4 分布式训练的LLMs 4 NLP的应用 4.1 序列分类 4.2 两两序列分类 4.3 单词标注 4.4 Seq2Seq 5 LLMs的应用模型 5.1 GPT 5.2 BERT 5.…

【密码学】SM4算法

一、 SM4算法简介 SM4算法是中国国家密码管理局于2012发布的一种分组密码算法&#xff0c;其官方名称为SMS4&#xff08;SMS4.0&#xff09;&#xff0c;相关标准为GM/T 0002-2012《SM4分组密码算法》。SM4算法的分组长度和密钥长度均为128比特,采用非平衡Feistel结构。采用32…