python pyautogui实现图片识别点击失败后重试
安装库
pip install Pillow
pip install opencv-python
confidence作用
confidence 参数是用于指定图像匹配的信度(或置信度)的,它表示图像匹配的准确程度。这个参数的值在 0 到 1 之间,数值越高表示匹配的要求越严格。
具体来说,confidence 参数用于调整在屏幕上搜索目标图像时的匹配精度:
0.0 表示完全不匹配。
1.0 表示完全匹配。
在实际应用中,图像匹配的信度可以帮助你处理一些图像上的细微差异。例如,屏幕上的图像可能因为分辨率、光线、颜色等原因与原始图像有些不同。通过调整 confidence 参数,你可以设置一个合理的阈值,使得图像匹配过程既不太严格(导致找不到图像),也不太宽松(导致误匹配)。
举个例子,如果你设置 confidence=0.8,那么只有当屏幕上的图像与目标图像的相似度达到 80% 以上时,才会被认为是匹配的。
识别图片点击
import pyautogui
import time
import osdef locate_and_click_image(image_path, retry_interval=2, max_retries=5, click_count=1, confidence=None):"""定位图片并点击指定次数。:param image_path: 图片路径:param retry_interval: 重试间隔时间(秒):param max_retries: 最大重试次数:param click_count: 点击次数:param confidence: 图像匹配的信度(0到1之间),需要安装 OpenCV:return: 图片的位置 (x, y, width, height) 或 None(如果未找到)"""if not os.path.isfile(image_path):print(f"错误:图片路径无效或文件不存在: {image_path}")return Noneretries = 0while retries < max_retries:try:if confidence is not None:location = pyautogui.locateOnScreen(image_path, confidence=confidence)else:location = pyautogui.locateOnScreen(image_path)if location is not None:print(f"找到图片: {image_path},位置: {location}")center = pyautogui.center(location)for _ in range(click_count):pyautogui.click(center)print(f"点击图片中心位置。点击次数:{_ + 1}")return locationelse:print(f"未找到图片: {image_path},{retry_interval}秒后重试...(重试次数: {retries + 1}/{max_retries})")time.sleep(retry_interval)retries += 1except pyautogui.ImageNotFoundException:print(f"未找到图片: {image_path},{retry_interval}秒后重试...(重试次数: {retries + 1}/{max_retries})")time.sleep(retry_interval)retries += 1print(f"达到最大重试次数: {max_retries},未找到图片: {image_path}")return Nonedef main():image_path = '1.png' # 替换为你的图片路径retry_interval = 2max_retries = 5click_count = 1confidence = 0.8 # 如果不使用 OpenCV,请将此参数设置为 Nonelocation = locate_and_click_image(image_path, retry_interval, max_retries, click_count, confidence)if location:print("操作完成。")else:print("未能定位到图片,程序结束。")if __name__ == "__main__":locate_and_click_image('1.png', retry_interval=2, max_retries=5, click_count=2, confidence=0.8)
优化代码,识别多张图片并点击
import pyautogui
import time
import osdef locate_and_click_image(path, retry_interval=2, max_retries=5, click_count=1, confidence=None):if not os.path.isfile(path):print(f"错误:图片路径无效或文件不存在: {path}")return Noneretries = 0while retries < max_retries:try:if confidence is not None:location = pyautogui.locateOnScreen(path, confidence=confidence)else:location = pyautogui.locateOnScreen(path)if location is not None:print(f"找到图片: {path},位置: {location}")center = pyautogui.center(location)for _ in range(click_count):pyautogui.click(center)print(f"点击图片中心位置。点击次数:{_ + 1}")return locationelse:print(f"未找到图片: {path},{retry_interval}秒后重试...(重试次数: {retries + 1}/{max_retries})")time.sleep(retry_interval)retries += 1except pyautogui.ImageNotFoundException:print(f"未找到图片: {path},{retry_interval}秒后重试...(重试次数: {retries + 1}/{max_retries})")time.sleep(retry_interval)retries += 1print(f"达到最大重试次数: {max_retries},未找到图片: {path}")return Nonedef main():images = [{'path': '1.png', 'retry_interval': 2, 'max_retries': 5, 'click_count': 1, 'confidence': 0.8},{'path': '3.png', 'retry_interval': 2, 'max_retries': 5, 'click_count': 1, 'confidence': 0.8},# 添加更多图片]for image in images:location = locate_and_click_image(**image)if location:print(f"图片 {image['path']} 操作完成。")else:print(f"未能定位到图片 {image['path']},程序结束。")if __name__ == "__main__":main()
优化代码,识别多张图片,只要识别到图片就结束循环
import pyautogui
import time
import osdef locate_and_click_image(path, retry_interval=2, max_retries=5, click_count=1, confidence=None):if not os.path.isfile(path):print(f"错误:图片路径无效或文件不存在: {path}")return Noneretries = 0while retries < max_retries:try:if confidence is not None:location = pyautogui.locateOnScreen(path, confidence=confidence)else:location = pyautogui.locateOnScreen(path)if location is not None:print(f"找到图片: {path},位置: {location}")center = pyautogui.center(location)for _ in range(click_count):pyautogui.click(center)print(f"点击图片中心位置。点击次数:{_ + 1}")return Trueelse:print(f"未找到图片: {path},{retry_interval}秒后重试...(重试次数: {retries + 1}/{max_retries})")time.sleep(retry_interval)retries += 1except pyautogui.ImageNotFoundException:print(f"未找到图片: {path},{retry_interval}秒后重试...(重试次数: {retries + 1}/{max_retries})")time.sleep(retry_interval)retries += 1print(f"达到最大重试次数: {max_retries},未找到图片: {path}")return Falsedef main():images = [{'path': '1.png', 'retry_interval': 2, 'max_retries': 5, 'click_count': 1, 'confidence': 0.8},{'path': '3.png', 'retry_interval': 2, 'max_retries': 5, 'click_count': 1, 'confidence': 0.8},{'path': '4.png', 'retry_interval': 2, 'max_retries': 5, 'click_count': 1, 'confidence': 0.8},# 添加更多图片]for image in images:success = locate_and_click_image(**image)if success:print(f"图片 {image['path']} 操作完成。")breakelse:print(f"未能定位到图片 {image['path']}。")if __name__ == "__main__":main()
如有帮助,请多多支持作者! 你鼓励是我最大的动力~QAQ~

相关文章:
python pyautogui实现图片识别点击失败后重试
安装库 pip install Pillow pip install opencv-python confidence作用 confidence 参数是用于指定图像匹配的信度(或置信度)的,它表示图像匹配的准确程度。这个参数的值在 0 到 1 之间,数值越高表示匹配的要求越严格。 具体来…...
怎么看电脑实时充电功率
因为我想测试不同的充电器给电脑充电的速度,所以就想找一款软件可以看电脑当前充电功率的软件,我给一个图 直接搜索就可以下载了,charge rate就是功率,这里是毫瓦,换算单位是 1000mw1w 所以我这里充电功率是65w&…...
Qt 实战(4)信号与槽 | 4.2、自定义信号与槽
文章目录 一、自定义信号与槽1、自定义信号2、自定义槽3、连接信号与槽4、总结 前言: 在Qt框架中,信号(signals)和槽(slots)机制是对象间通信的核心。这种机制允许对象在特定事件发生时发出信号,…...
Android开发系列(六)Jetpack Compose之Box
Box是一个用来组合和控制子元素布局的组件。它可以在一个矩形区域内排列一个或多个子元素,并根据所提供的参数来控制它们的位置、大小和样式。 Box的功能类似传统的FrameLayout。 下面通过示例了解Box的使用方法,首先看一个最简单的示例,如下…...
51单片机STC89C52RC——4.1 独立按键(数码管显示按键值)
目录 目录 目的 一,STC单片机模块 二,矩阵按键模块 2.1 针脚定义 编辑 2.2 矩阵按键位置 2.3 如何理解按键按下后针脚的高低电平 2.3.1 错误理解1 2.3.2 错误理解2 2.3.3 正确判定按下的是那个按键的逻辑 2.3.4 判定按键按下的依次扫描程…...
解决双击bootstrap.bat没有生成b2.exe文件
双击bootstrap.bat但是并没有没有生成b2.exe文件,会报如下错误: "cl" 不是内部或外部命令,也不是可运行的程序 或批处理文件。D:\cppsoft\boost_1_85_0\tools\build\src\engine>dir *.exe 驱动器 D 中的卷是 Data 卷的序列号是…...
AI穿戴设备是未来手机的终结者?中国AI商业化的未来预测
AI技术的发展正处于商业化应用的关键阶段,而中国在互联网时代已凭借商业化应用逆袭。AI算法大模型虽强大,但真正普惠民众需与设备深度结合。穿戴式智能设备就成为了新战场,AI算法与穿戴设备结合能释放更大工作效率。私人助理AI将成趋势&#…...
FPGA+Nvidia Orin NX+AI 异构视频图像处理开发平台在高端医疗和工业检测的应用,支持定制,支持国产化
FPGAGPU 异构架构视频图像处理开发平台,它结合了 AMD Zynq UltraScale MPSoC(FPGA)与 NVIDIA Jetson Orin NX(GPU)的强大功能,能够应用于对图像精准度和实时性有着严苛要求的行业领域。 Zynq UltraScale MP…...
2000-2023年各省名义GDP、实际GDP、GDP平减指数数据(含原始数据+计算过程+计算结果)(以2000年为基期)
2000-2023年各省名义GDP、实际GDP、GDP平减指数数据(含原始数据计算过程计算结果)(以2000年为基期) 1、时间:2000-2023年 2、范围:31省 3、指标:名义GDP、国内生产总值指数、实际GDP、GDP平减…...
python学习—字典(Dictionary)
系列文章目录 python学习—列表和元组 python学习—循环语句-控制流 python学习—合并TXT文本文件 python学习—统计嵌套文件夹内的文件数量并建立索引表格 python学习—查找指定目录下的指定类型文件 python学习—年会不能停,游戏抽签抽奖 python学习—合并多个Ex…...
鸿蒙开发:【组件启动规则(FA模型)】
组件启动规则(FA模型) 启动组件是指一切启动或连接应用组件的行为: 启动PageAbility、ServiceAbility,如使用startAbility()等相关接口。连接ServiceAbility、DataAbility,如使用connectAbility()、acquireDataAbili…...
网络编程5----初识http
1.1 请求和响应的格式 http协议和前边学过的传输层、网络层协议不同,它是“一问一答”形式的,所以要分为请求和响应两部分看待,同时,请求和响应的格式是不同的,我们来具体介绍一下。 1.1.1 请求 在介绍请求之前&…...
“用友审批+民生付款”,YonSuite让企业发薪更准时
随着现代企业经营模式的不断创新和市场竞争的加剧,企业薪资管理和发放的效率、准确性和及时性已成为企业管理的重要一环。然而,在实际操作中,许多企业面临着薪资管理复杂、发放流程繁琐、数据不准确等难点和痛点。为了解决这些问题࿰…...
EtherCAT扫盲,都是知识点
1. 什么是EtherCAT EtherCAT,全称Ethernet for Control Automation Technology,字面意思就是用于控制自动化技术的以太网。它是一种基于以太网的实时工业通信协议,简单说,就是让机器们通过网线互相聊天的高级方式。 EtherCAT 是最…...
开发中遇到的错误 - @SpringBootTest 注解爆红
我在使用 SpringBootTest 注解的时候爆红了,ait 回车也导不了包,后面发现是因为没有加依赖: <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId>…...
数据仓库的实际应用示例-广告投放平台为例
数据仓库的数据分层通常包括以下几层: ODS层:存放原始数据,如日志数据和结构化数据。DWD层:进行数据清洗、脱敏、维度退化和格式转换。DWS层:用于宽表聚合值和主题加工。ADS层:面向业务定制的应用数据层。…...
Beyond VL了解学习
Beyond VL:多模态处理的前沿 在今天的数据驱动时代,我们经常需要处理和分析多种类型的数据,例如文本、图像、视频和音频。Beyond VL 是一个先进的多模态模型,专为处理这些多种数据而设计。它能够同时处理多种模态的数据ÿ…...
AI音乐革命:创意产业的新篇章
随着科技的飞速发展,人工智能(AI)在各个领域的应用越来越广泛,特别是在音乐产业中,AI音乐大模型的涌现,正在重新定义音乐创作的边界。最近一个月,随着多个音乐大模型的轮番上线,素人…...
python从入门到精通1:注释
在Python编程中,注释是一种非常重要的工具,它不仅可以帮助我们记录代码的目的、工作方式以及任何需要注意的地方,还可以使代码更具可读性。Python提供了两种主要的注释方式:单行注释和多行注释。下面我们将深入探讨这两种注释方式…...
CountDownLatch(应对并发问题的工具类)
CountDownLatch CountDownLatch允许一个或多个线程等待其他线程完成操作以后,再执行当前线程;比如我们在主线程需要开启2个其他线程,当其他的线程执行完毕以后我们再去执行主线程,针对这 个需求我们就可以使用CountDownLatch来进…...
线程与协程
1. 线程与协程 1.1. “函数调用级别”的切换、上下文切换 1. 函数调用级别的切换 “函数调用级别的切换”是指:像函数调用/返回一样轻量地完成任务切换。 举例说明: 当你在程序中写一个函数调用: funcA() 然后 funcA 执行完后返回&…...
C# 求圆面积的程序(Program to find area of a circle)
给定半径r,求圆的面积。圆的面积应精确到小数点后5位。 例子: 输入:r 5 输出:78.53982 解释:由于面积 PI * r * r 3.14159265358979323846 * 5 * 5 78.53982,因为我们只保留小数点后 5 位数字。 输…...
#Uniapp篇:chrome调试unapp适配
chrome调试设备----使用Android模拟机开发调试移动端页面 Chrome://inspect/#devices MuMu模拟器Edge浏览器:Android原生APP嵌入的H5页面元素定位 chrome://inspect/#devices uniapp单位适配 根路径下 postcss.config.js 需要装这些插件 “postcss”: “^8.5.…...
STM32HAL库USART源代码解析及应用
STM32HAL库USART源代码解析 前言STM32CubeIDE配置串口USART和UART的选择使用模式参数设置GPIO配置DMA配置中断配置硬件流控制使能生成代码解析和使用方法串口初始化__UART_HandleTypeDef结构体浅析HAL库代码实际使用方法使用轮询方式发送使用轮询方式接收使用中断方式发送使用中…...
Chromium 136 编译指南 Windows篇:depot_tools 配置与源码获取(二)
引言 工欲善其事,必先利其器。在完成了 Visual Studio 2022 和 Windows SDK 的安装后,我们即将接触到 Chromium 开发生态中最核心的工具——depot_tools。这个由 Google 精心打造的工具集,就像是连接开发者与 Chromium 庞大代码库的智能桥梁…...
水泥厂自动化升级利器:Devicenet转Modbus rtu协议转换网关
在水泥厂的生产流程中,工业自动化网关起着至关重要的作用,尤其是JH-DVN-RTU疆鸿智能Devicenet转Modbus rtu协议转换网关,为水泥厂实现高效生产与精准控制提供了有力支持。 水泥厂设备众多,其中不少设备采用Devicenet协议。Devicen…...
【Veristand】Veristand环境安装教程-Linux RT / Windows
首先声明,此教程是针对Simulink编译模型并导入Veristand中编写的,同时需要注意的是老用户编译可能用的是Veristand Model Framework,那个是历史版本,且NI不会再维护,新版本编译支持为VeriStand Model Generation Suppo…...
对象回调初步研究
_OBJECT_TYPE结构分析 在介绍什么是对象回调前,首先要熟悉下结构 以我们上篇线程回调介绍过的导出的PsProcessType 结构为例,用_OBJECT_TYPE这个结构来解析它,0x80处就是今天要介绍的回调链表,但是先不着急,先把目光…...
归并排序:分治思想的高效排序
目录 基本原理 流程图解 实现方法 递归实现 非递归实现 演示过程 时间复杂度 基本原理 归并排序(Merge Sort)是一种基于分治思想的排序算法,由约翰冯诺伊曼在1945年提出。其核心思想包括: 分割(Divide):将待排序数组递归地分成两个子…...
自定义线程池1.2
自定义线程池 1.2 1. 简介 上次我们实现了 1.1 版本,将线程池中的线程数量交给使用者决定,并且将线程的创建延迟到任务提交的时候,在本文中我们将对这个版本进行如下的优化: 在新建线程时交给线程一个任务。让线程在某种情况下…...
