opencv读取图片相对路径和绝对路径
时间: 2025-01-20 07:51:48 浏览: 60
### 如何在 OpenCV 中使用相对路径和绝对路径读取图片
#### 使用绝对路径读取图片
当指定图像的绝对路径时,确保路径字符串正确无误非常重要。对于 Windows 系统而言,由于反斜杠 `\` 是转义字符,在 Python 字符串中应使用原始字符串 `r""` 或者双反斜杠 `\\` 来避免解析错误。
```python
import cv2
image_path_absolute = r"C:\Users\17135\Desktop\python\1.jpg"
img_abs = cv2.imread(image_path_absolute)
if img_abs is not None:
print("成功通过绝对路径加载图片")
else:
print("未能通过绝对路径加载图片")
```
此方法适用于任何操作系统环境中的固定位置文件访问[^4]。
#### 处理相对路径读取图片
相对于当前工作目录的位置来定位文件的方式称为相对路径。这通常用于开发环境中保持代码可移植性和灵活性。然而需要注意的是,程序运行的工作目录可能不同于源码所在位置,因此建议显式设置或获取工作目录以确认预期行为。
```python
import os
import cv2
current_dir = os.getcwd()
relative_image_path = "images/example.png" # 假设 images 文件夹位于项目根目录下
full_relative_path = os.path.join(current_dir, relative_image_path)
img_rel = cv2.imread(full_relative_path)
if img_rel is not None:
print("成功通过相对路径加载图片")
else:
print(f"未能通过相对路径 {full_relative_path} 加载图片,请检查路径是否正确以及是否有权限访问该文件")
```
为了防止 Qt release 版本或其他特定编译环境下可能出现的问题,务必验证工作目录并测试不同平台上的兼容性[^2]。
#### 解决中文路径问题
如果遇到包含非 ASCII 字符(如汉字)在内的路径,则推荐采用 NumPy 结合 OpenCV 的方式处理:
```python
import numpy as np
import cv2
chinese_path = 'C:\\路径中有中文的文件名.jpg'
with open(chinese_path, 'rb') as f:
content = f.read()
nparr = np.frombuffer(content, dtype=np.uint8)
img_chinese = cv2.imdecode(nparr, flags=cv2.IMREAD_COLOR)
if img_chinese is not None:
print("成功从带有中文路径处加载图片")
else:
print("未能从带有中文路径处加载图片")
```
这种方法绕过了直接依赖于文件系统的限制,从而提高了跨平台稳定性[^1]。
阅读全文
相关推荐

















