Python脚本使用相对路径读取OpenCV图片失败,寻求解决方案
路径读取失败的排查与解决建议
针对你遇到的/HW/bilin_intpol.py无法通过../code/lenna.png加载图片的问题,整理几个常见原因和解决办法:
1. 运行脚本的工作目录不对
相对路径是基于你执行脚本时所在的目录,而不是脚本本身的存放目录。比如你如果在根目录/下执行python HW/bilin_intpol.py,那../code会被解析成/../code,这显然不存在。
- 解决办法:
- 先切换到脚本所在目录再运行:
cd /HW && python bilin_intpol.py - 或者在脚本里自动获取绝对路径,避免依赖工作目录:
import os import cv2 # 获取脚本自身的绝对路径 script_path = os.path.abspath(__file__) script_dir = os.path.dirname(script_path) # 拼接图片路径,系统会自动解析../为上级目录 img_path = os.path.join(script_dir, '../code/lenna.png') # 更稳妥的方式是直接写绝对路径 # img_path = '/code/lenna.png' img = cv2.imread(img_path)
- 先切换到脚本所在目录再运行:
2. 文件或路径本身有问题
- 检查
/code/lenna.png是否真实存在,注意Linux系统区分大小写,比如Lenna.png和lenna.png是不同文件。 - 检查文件权限:用
ls -l /code/lenna.png查看权限,如果脚本没有读取权限,执行sudo chmod +r /code/lenna.png赋予读权限。
3. OpenCV加载的隐藏问题
cv2.imread()加载失败不会报错,只会返回None,你可以先打印print(img)确认是不是None,确定是路径问题还是图片损坏。- 用系统自带工具(比如
eog /code/lenna.png)打开图片,验证图片本身是否正常。
内容的提问来源于stack exchange,提问作者Songhua Zou
相关产品推荐
相关产品推荐

