如何用Python PyAutoGUI实现等待屏幕图片出现后自动点击对应位置的功能
实现方案
你需要在原有逻辑基础上增加循环检测机制、超时控制和空值判断,避免识别不到图片时报错,同时降低CPU占用,完整实现代码如下:
import time import pyautogui as pag def click_image(img, timeout=30, interval=0.5): """ 等待目标图片出现并点击对应位置 :param img: 待识别的目标图片路径 :param timeout: 最长等待时长,单位为秒,默认30秒 :param interval: 每次屏幕检测的间隔时长,单位为秒,默认0.5秒 :return: 点击成功返回True,超时未找到目标返回False """ start_timestamp = time.time() while time.time() - start_timestamp < timeout: target_pos = pag.locateCenterOnScreen(img, confidence=config.OPENCV_CONFIDENCE) # 仅识别到有效坐标时执行点击 if target_pos: pag.click(target_pos) return True # 未识别到目标时等待后重试,避免占满CPU资源 time.sleep(interval) return False
逻辑说明
- 新增了超时控制,默认最多等待30秒,避免脚本因为目标图片一直不出现而无限卡死,你可以根据游戏实际加载速度调整
timeout参数 - 每次检测间隔0.5秒,不会过度占用系统资源,对识别速度要求高的场景可以调低
interval参数 - 只有返回有效坐标时才会触发点击逻辑,不会出现传入空值给
click方法导致的报错 - 调用方式和你原有函数保持一致,直接传入图片路径即可:
click_image("目标按钮截图.png")
注意事项
- 用于识别的截图必须从你的游戏界面直接截取,不要进行缩放、裁剪、调色操作,否则会大幅降低识别准确率
confidence参数建议设置在0.7~0.9区间,设置过高容易出现识别不到的问题,设置过低容易出现误识别
内容的提问来源于stack exchange,提问作者Peeps
相关产品推荐
相关产品推荐

