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

如何使用pyautogui.locateOnScreen()在多个区域查找多张图片

报错根本原因

pyautogui.locateOnScreen 仅支持传入单个图片路径、单个OpenCV NumPy数组或单个PIL图片对象,你直接把整个图片列表missionShipList作为参数传入,触发了参数类型校验报错。你后续尝试遍历列表时,依然错误传入了整个列表,没有使用遍历出来的单张图片变量。


需要修改的具体问题

  1. 参数传入错误:遍历图片列表后,要把单张图片变量传给locateOnScreen,不要传整个列表
  2. cv读取逻辑错误:你调用了cv.imread但没有保存返回的数组,还是把原文件路径加入列表,读取操作未生效
  3. 导入语句错误:原导入语句写法、拼写均有问题,PIL的导入格式不对
  4. 无效判断逻辑:你初始化的missionShipList是列表类型,永远不可能等于None,判断为空要用if not missionShipList
  5. 冗余循环逻辑:外层已经有执行次数循环,内层重复写了相同的循环,导致逻辑重复执行
  6. region参数大概率错误:pyautogui的region参数格式为(左上角x, 左上角y, 区域宽度, 区域高度),你当前填写的看起来是左上角+右下角的坐标,会导致识别区域完全不符合预期,需要按格式调整

修正后可运行代码

import pyautogui as py
import cv2 as cv
import glob
# 修正导入语句
from PIL.ImageOps import grayscale

def missions(a):
    # 固定配置提到循环外,避免重复初始化
    regions = {
        "region 1": (412, 169, 61, 82), # 按(左,上,宽,高)格式修改的示例,需自行计算每个区域的正确宽高
        "region 2": (428, 687, 29, 46),
        "region 3": (1278, 161, 31, 62),
        "region 4": (1266, 673, 56, 80)
    }
    # 提前加载所有模板图片,避免重复读盘
    missionShipList = []
    directory = glob.glob(r"C:\users\stevphen\*.jpg")
    for file in directory:
        if file.endswith('.png') or file.endswith('.jpg'):
            # 方式1:直接存图片路径(二选一即可)
            # missionShipList.append(file)
            # 方式2:存cv读取的数组(二选一即可)
            img = cv.imread(file, cv.IMREAD_UNCHANGED)
            if img is not None:
                missionShipList.append(img)
    
    # 修正空列表判断
    if not missionShipList:
        print("failed to load template.")
        return

    for _ in range(a):
        for region_name, region in regions.items():
            # 遍历单张图片做识别
            for ship_template in missionShipList:
                missionShips = py.locateOnScreen(ship_template, region=region, grayscale=True, confidence=0.86)
                if missionShips is not None:
                    print(f"Clicked a mission ship in {region_name}")
                    py.click(missionShips)
                    # 找到目标后可加break跳出当前区域循环,避免重复点击
                    break

missions(3)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 21:15:02