使用PyAutoGUI识别PNG图像并自动点击按钮

ops/2024/9/23 14:29:43/

自动化测试、任务批处理等场景中,我们常常需要控制GUI程序的鼠标键盘操作。PyAutoGUI就是一个非常方便的Python模块,可以帮助我们实现这些操作。今天我们就来看看如何使用PyAutoGUI识别屏幕上的PNG图像,并自动点击图像所在位置。
C:\pythoncode\new\autoguirecongnizepng.py

全部代码:

python">import pyautogui
import cv2
import timepyautogui.hotkey('win', 'r')
pyautogui.write('msedge')
pyautogui.press('enter')# Go to bing.com
time.sleep(5)pyautogui.hotkey('ctrl', 'l') pyautogui.write('http://localhost:44471/Forguncy')
pyautogui.press('enter')
pyautogui.press('enter')time.sleep(5)
# 加载PNG图像
button_img = cv2.imread('button.png')# 在屏幕上查找图像
button_location = pyautogui.locateOnScreen(button_img, confidence=0.8)# 如果找到图像,点击其中心
if button_location is not None:button_x, button_y = pyautogui.center(button_location)pyautogui.click(button_x, button_y)
else:print('未找到按钮图像')

安装依赖库

在开始之前,我们需要先安装PyAutoGUI和OpenCV两个Python库:

pip install pyautogui
pip install opencv-python

PyAutoGUI用于控制鼠标键盘,而OpenCV则用于读取和处理图像。

导入模块

接下来在Python代码中导入必要的模块:

python">import pyautogui
import cv2

加载待识别图像

使用OpenCV读取待识别的PNG图像文件:

python">button_img = cv2.imread('button.png')

将图像路径替换为你自己的PNG文件路径。

在屏幕上查找图像

使用PyAutoGUI的locateOnScreen函数搜索与图像匹配的屏幕区域:

python">button_location = pyautogui.locateOnScreen(button_img, confidence=0.8)

confidence参数设置了匹配度阈值,范围0到1,值越高要求越精确。

点击图像中心

如果locateOnScreen成功找到了匹配区域,它会返回该区域的左上角坐标。我们可以计算出中心位置,并使用click函数在该位置模拟鼠标点击:

python">if button_location is not None:button_x, button_y = pyautogui.center(button_location)pyautogui.click(button_x, button_y)
else:print('未找到按钮图像')

完整代码

python">import pyautogui
import cv2button_img = cv2.imread('button.png')
button_location = pyautogui.locateOnScreen(button_img, confidence=0.8)if button_location is not None:button_x, button_y = pyautogui.center(button_location)pyautogui.click(button_x, button_y)
else:print('未找到按钮图像')

结果如下:
在这里插入图片描述

就是这样,使用PyAutoGUI和OpenCV我们可以很轻松地识别屏幕上的图像并执行点击操作。在实际使用中,你可能需要根据具体情况调整confidence参数以获得理想的匹配效果。另外注意,PyAutoGUI在运行时会直接控制鼠标键盘,所以测试时请小心操作。

希望这篇博客能够对你有所启发,如有任何疑问欢迎留言讨论。


http://www.ppmy.cn/ops/45688.html

相关文章

【WP|5】WordPress 插件开发详解

WordPress 插件是一种扩展 WordPress 功能的方法,开发插件不仅能增强网站的功能性,还能提供给其他用户使用。本文将详细讲解 WordPress 插件开发的基本步骤和一些高级技巧,帮助你从零开始创建一个功能强大的插件。 一、插件开发的基础 1. 插…

【模型架构】学习RNN、LSTM、TextCNN和Transformer以及PyTorch代码实现

一、前言 在自然语言处理(NLP)领域,模型架构的不断发展极大地推动了技术的进步。从早期的循环神经网络(RNN)到长短期记忆网络(LSTM)、Transformer再到当下火热的Mamba(放在下一节&a…

SD6210A 低噪声恒定频率开关电容调节输出电流2.8V-5VSOT-23封装

该SD6210A是一种低噪声,恒定频率(1.20MHz )开关电容电压倍增器。它产生一个调节输出电 压从2.8V到5V的输入高达250mA的输出电流。低 外部零件数(一个飞行电容器和两个小旁路电容 铝VIN和VOUT)使SD6210A非常适合小型,电池 供电的应用 新的电荷泵架构保持恒…

连锁收银系统的五大功能 会员营销是核心

连锁企业的收银系统是其经营管理的关键工具之一,具备多种功能可以帮助企业提高效率、优化服务并实现会员营销。以下是连锁收银系统的五大功能,其中会员营销作为核心功能将在最后详细讨论。 首先,收银系统应具备高效的销售管理功能。这包括商品…

COMSOL中液晶材料光学特性模拟

前面我们根据FDTD官方文档设置了液晶指向的模型。COMSOL也可以根据相似的方法设置各项异性的周期性变化的材料。 该方法参考了luneburg_lens的COMSOL文档 在给出的文件中,可以发现定义-变量中可以使用默认坐标作为变量,即xyz。因此,折射率也可…

Rust的高效易用日志库—tklog

很多人习惯于python,go等语言基础工具库的简单易用;在使用rust时,可能感觉比较麻烦,类似日志库这样的基础性工具库。tklog提供用法上,非常类似python等Logger的日志库用法,用法简洁;基于rust的高…

校园导航系统C++

制作一个简单的大学城导航系统,根据用户指定的起点和终点,求出最短路径长度以及具体路径。 项目要求: 1)程序与数据相分离,地图中的所有数据都是从文件读入,而不是写在代码中 2)最短路径算法…

黑客团伙利用Python、Golang和Rust恶意软件袭击印国防部门;OpenAI揭秘,AI模型如何被用于全球虚假信息传播? | 安全周报0531

巴黑客团伙利用Python、Golang和Rust恶意软件袭击印度国防部门! 与巴基斯坦有联系的Transparent Tribe组织已被确认与一系列新的攻击有关,这些攻击使用Python、Golang和Rust编写的跨平台恶意软件,针对印度政府、国防和航空航天部门。 “这一…