使用列表推导式结合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
相关产品推荐
相关产品推荐

