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

使用列表推导式结合pyautogui识别数字图片触发对应进程的实现问询

PyAutoGUI多图片识别触发对应进程的实现方法

你写的列表推导式最终会生成一个长度为4的列表number,列表元素按顺序对应one、two、three、four四张图的识别结果:识别成功返回PyAutoGUI的位置对象,识别失败返回None。
你可以参考两种实现方案来完成需求:

方案1:基于现有列表推导式的适配方案

直接遍历识别结果列表,根据索引匹配对应进程即可:

import pyautogui
import subprocess # 用于启动外部进程,可根据自身需求替换

# 你原有的识别代码
number = [pyautogui.locateOnScreen(f'{nr}.png', confidence = 0.95)
                for nr in ('one', 'two', 'three', 'four')
            ]

# 处理识别结果
for idx, locate_res in enumerate(number):
    if locate_res: # 仅处理识别成功的结果
        # 索引从0开始,对应进程号为idx+1,替换为你自己的进程启动逻辑即可
        subprocess.Popen(f"你的进程{idx+1}的启动命令")
        # 如果仅需要处理第一个识别到的图片,添加break终止遍历
        break

方案2:无需保存全量识别结果的优化方案

如果不需要留存所有图片的识别结果,可以直接边检测边处理,节省内存:

import pyautogui
import subprocess

for idx, img_name in enumerate(('one', 'two', 'three', 'four')):
    locate_res = pyautogui.locateOnScreen(f"{img_name}.png", confidence=0.95)
    if locate_res:
        # 替换为对应进程的启动逻辑即可
        subprocess.Popen(f"你的进程{idx+1}的启动命令")
        # 不需要继续检测其他图片就保留break,允许多匹配就删掉
        break

注意事项

  • 若你需要支持多张图片同时识别、触发多个对应进程,去掉代码中的break即可
  • confidence参数依赖opencv-python库,运行前需执行pip install opencv-python安装依赖
  • 如果你是调用内部函数而非启动外部进程,直接替换subprocess.Popen行的代码为你的函数调用即可,比如run_process_1()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 17:33:00