You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用PyAutoGUI定位截图中对象失败,寻求解决方案

PyAutoGUI 屏幕定位失败的问题修复

你的代码存在几个关键问题,导致无法正确定位目标对象,以下是问题分析和修正方案:

问题1:截图保存逻辑错误

调用pyautogui.screenshot(region=(1040,295,100,30))时未将返回的截图对象赋值给变量,后续用ims.save(...)保存的是之前ims对应的另一区域截图,导致用于定位的saveimage.png并非目标区域内容。

问题2:未接收定位函数返回值

pyautogui.locateAllOnScreen返回的是生成器,你未将其赋值给cords变量,直接打印和调用pyautogui.click(cords)会触发未定义错误。若只需找单个目标,用locateOnScreen更合适,它会返回第一个匹配的区域坐标。

问题3:confidence参数依赖缺失

使用confidence参数需要OpenCV库支持,未安装的话该参数无效,会导致定位精度不足或报错,先执行安装命令:

pip install opencv-python

修正后的代码

from pyautogui import *
import pyautogui
import time
import keyboard
import win32api, win32con

def click(x,y):
    win32api.SetCursorPos((x,y))
    win32api.mouse_event(win32con.MOUSEEVENTF_LEFTDOWN,0,0)
    win32api.mouse_event(win32con.MOUSEEVENTF_LEFTUP,0,0)

# 等待2秒准备
time.sleep(2)

while not keyboard.is_pressed('q'):
    # 截取目标区域并保存
    target_screenshot = pyautogui.screenshot(region=(1040,295,100,30))
    target_screenshot.save(r"C:\Users\Billy Bong\Desktop\python\saveimage.png")
    
    # 截取监控区域(用于验证)
    monitor_screenshot = pyautogui.screenshot(region=(569,381,800,450))
    monitor_screenshot.save(r"C:\Users\Billy Bong\Desktop\python\saveimage2.png")
    
    time.sleep(2)
    
    # 查找目标位置
    try:
        cords = pyautogui.locateOnScreen("saveimage.png", confidence=0.6)
        if cords:
            # 点击目标中心
            center_x, center_y = pyautogui.center(cords)
            click(center_x, center_y)
            print(f"找到目标,坐标:{cords}")
        else:
            print("未找到目标")
    except Exception as e:
        print(f"定位出错:{e}")
    
    time.sleep(10)
    break

额外提示

  • 若目标存在动态变化(如颜色、轻微位移),可调整confidence值(0-1区间),值越低匹配越宽松。
  • 检查saveimage.png是否为目标区域的正确截图,确保路径无权限问题。

内容的提问来源于stack exchange,提问作者jake asi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.17 23:35:39