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

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

全部代码:

import pyautogui
import cv2
import time


pyautogui.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代码中导入必要的模块:

import pyautogui
import cv2

加载待识别图像

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

button_img = cv2.imread('button.png')

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

在屏幕上查找图像

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

button_location = pyautogui.locateOnScreen(button_img, confidence=0.8)

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

点击图像中心

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

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

完整代码

import pyautogui
import cv2

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

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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

AlexNet,LeNet-5,ResNet,VGG-19,VGG-16模型

模型 AlexNet导入必要的库:加载类别名称:创建标签映射字典:加载图像数据和对应的标签:构建AlexNet模型:编译模型:训练模型: LeNet-5导入必要的库:加载类别名称:创建标签映…

程序卡在 B.处什么原因?如何处理?(串口配置无问题,重写putc无问题,但不打印)

文章目录 前提现象:debug:原因总结 前提 为了张流量券多加更一篇,是我2月份遇到的问题的总结,在我的笔记中,一直没发 现象: 已经配置好串口但不打印输出(printf指向串口1 的SR寄存器&#xf…

CentOS下安装SVN客户端及使用方法

一、前言 Subversion(SVN)是一款开源的版本控制系统,它可以帮助开发者追踪和管理代码、文档或其他文件的更改历史。在Linux系统中,特别是在CentOS环境下,安装和使用SVN客户端是日常工作中常见的任务。本文将介绍如何在…

Neovim 配置全面解析(下)

Neovim 配置全面解析(下) 原文:Neovim 配置全面解析(下) - 知乎 (zhihu.com) 环境:Ubuntu 20.04 宿主机:windows (windows terminal)WSL 2 NVIM:v 0.10.0-de…

如何解压忘记了密码的加密zip压缩包?这两个方法收藏好!

加密是一种保护信息不被未经授权访问的重要手段。ZIP压缩包作为一种常见的文件压缩格式,zip文件加密是很多人都回去做的一件事情,那么zip加密文件如何解密?有几种方法可以解密呢?今天介绍几种方法给大家。 一、尝试常用密码 我们…

【Python】解决Python报错:TypeError: ‘xxx‘ object does not support item assignment

🧑 博主简介:阿里巴巴嵌入式技术专家,深耕嵌入式人工智能领域,具备多年的嵌入式硬件产品研发管理经验。 📒 博客介绍:分享嵌入式开发领域的相关知识、经验、思考和感悟,欢迎关注。提供嵌入式方向…

【busybox记录】【shell指令】unlink

目录 内容来源: 【GUN】【unlink】指令介绍 【busybox】【unlink】指令介绍 【linux】【unlink】指令介绍 使用示例: 删除文件 - 默认 常用组合指令: 指令不常用/组合用法还需继续挖掘: 内容来源: GUN &#x…

xcode依赖包package已经安装,但是提示No such module ‘Alamofire‘解决办法

明明已经通过xcode自带的swift包管理器安装好了依赖包,但是却还是提示:No such module,这个坑爹的xcode,我也只能说服气,但是无奈,没办法攻打苹果总部,只能自己想解决办法了 No such module Ala…

ClickHouse 与其他数仓架构的对比——Clickhouse 架构篇(四)

文章目录 前言ClickHouse与Hive的对比计算引擎的差异ClickHouse比Hive查询速度快的原因 ClickHouse与HBase的对比HBase的存储系统与ClickHouse的异同HBase的适用场景及ClickHouse不适合的原因 ClickHouse与Kylin的对比Kylin的架构Kylin解决性能问题的思路Kylin方案的缺陷ClickH…

图片处理软件有哪些?这三款软件好用

图片处理软件有哪些?在当今这个数字化时代,图片处理软件成为了我们日常生活和工作中不可或缺的工具。无论是为了修饰个人照片,还是为了设计专业海报,这些软件都能帮助我们轻松实现创意和美化。那么,究竟有哪些热门的图…

CEEMDAN +组合预测模型(CNN-Transfromer + XGBoost)

注意:本模型继续加入 组合预测模型全家桶 中,之前购买的同学请及时更新下载! 往期精彩内容: 时序预测:LSTM、ARIMA、Holt-Winters、SARIMA模型的分析与比较-CSDN博客 VMD CEEMDAN 二次分解,Transformer-BiGRU预测模…

read test

功能性语言: 在.sh脚本下,read -p ——答应 read -t 时间 ——时间完成限制 特别注意空格。 test -n测试是内容一定要加双引号。 test 变量1 -ne 变量2 即比较大小。

视频汇聚EasyCVR平台视图库GA/T 1400协议与GB/T 28181协议的区别

在公安和公共安全领域,视频图像信息的应用日益广泛,尤其是在监控、安防和应急指挥等方面。为了实现视频信息的有效传输、接收和处理,GA/T 1400和GB/T 28181这两个协议被广泛应用。虽然两者都服务于视频信息处理的目的,但它们在实际…

22net冒泡排序与插入排序

冒泡排序 观看视频 【python练习题】每日一练_第八天_冒泡排序_哔哩哔哩_bilibilihttps://www.bilibili.com/video/BV1QT4y197pa/?spm_id_from333.337.search-card.all.click&vd_source498ae9e9c7a8a7d16da872c9d74cdc38PS:视频中用的了numpy库,大…

10W QPS高并发,如何防止重复下单?

小北说在前面 10wqps高并发,如何防止重复提交/支付订单? 10wqps高并发,如何防止重复下单? 10wqps高并发,如何防止重复支付? 10wqps高并发,如何解决重复操作问题? 最近有小伙伴在面试…

这有一封“数字赋能 强农兴村”的邀请函,请查收→

2024年6月5日至7日,以“数字赋能 强农兴村”为主题的2024中国(南京)数字乡村博览会暨第八届中国(南京)国际智慧农业博览会将在江苏南京举办。珈和科技在农业AI大数据展区的H16展位与您相约,共襄盛会。 私信…

iPhone用户推荐使用的藏汉翻译小助手:藏汉翻译通小程序,支持藏文OCR识别文字提取,卫藏语、安多语、康巴语学习背单词!

网上冲浪时,遇到不会的汉语词汇,可以复制到藏汉翻译通小程序中进行翻译。如果不会拼音,可以使用图片识别功能扫一扫文字,即可OCR识别提取文字。 此外,藏汉翻译通小程序现在还支持背单词和会话速成课程,支持…

java调用远程接口下载文件

在postman中这样下载文件 有时下载文件太大postman会闪退,可以通过代码下载,使用hutool的http包

HAL库使用FreeRTOS实时操作系统时配置时基源(TimeBase Source)

需要另外的定时器,用systic的时候生成项目会有警告 https://blog.51cto.com/u_16213579/10967728

java高级——Collection集合之List探索(包含ArrayList、LinkedList、Vector底层实现及区别,非常详细哦)

java高级——Collection集合之List探索 前情提要文章介绍提前了解的知识点1. 数组2. 单向链表3. 双向链表4. 为什么单向链表使用的较多5. 线程安全和线程不安全的概念 ArrayList介绍1. 继承结构解析1.1 三个标志性接口1.2 AbstractList和AbstractCollection 2. ArrayList底层代…