PyAutoGUI调用locateOnScreen读取maximise.png报错解决方案求助
解决方案
1. 修复路径引用问题
90%以上的该类报错都是相对路径匹配不到文件导致,你直接写maximise.png的相对路径时,脚本的运行工作目录不一定等于脚本文件所在目录,VS Code默认运行Python的工作目录通常是打开的项目根目录而非脚本存放目录,修改代码使用绝对路径定位图片:
import os import pyautogui as py from pyautogui import * # 拼接图片绝对路径,避免工作目录不一致问题 SCRIPT_PATH = os.path.abspath(__file__) SCRIPT_DIR = os.path.dirname(SCRIPT_PATH) MAXIMISE_IMG_PATH = os.path.join(SCRIPT_DIR, "maximise.png") # Open BlueStacks from taskbar: py.moveTo(2094, 1059, 1.2) py.click() # Wait for maximise icon to appear: status = False while not status: loc = py.locateOnScreen(MAXIMISE_IMG_PATH) if loc is not None: py.click(py.center(loc)) status = True
2. 验证图片有效性
运行以下命令确认图片是标准PNG格式,避免改后缀伪装的无效文件:
file /home/alex/Documents/Projects/foodOrderer/maximise.png
输出需包含PNG image data字样,不符合的话重新截图并保存为标准PNG格式。
3. 补全系统依赖
Arch Linux环境下pyscreeze(pyautogui的底层图片识别依赖)的OpenCV后端需要额外安装系统依赖:
sudo pacman -S --noconfirm opencv python-opencv libpng
4. 确认文件权限
单独给图片文件增加可读权限,避免目录权限不继承的问题:
chmod a+r /home/alex/Documents/Projects/foodOrderer/maximise.png
内容的提问来源于stack exchange,提问作者SILO
相关产品推荐
相关产品推荐

