opencv-3-图片存储与相对路径

本文详细介绍了在OpenCV中如何进行图像的显示与存储,重点关注QT环境下的路径处理。通过示例展示了在QT中如何读取和保存图像,并解释了绝对路径和相对路径的区别。此外,还讨论了在Visual Studio中设置运行路径的方法,以及在VS和QT混合编程时应注意的相对路径问题。

在上一篇文章opencv 显示第一副图像 中, 我们完成了一副图像的显示, 包括使用VS,和QT 进行显示… 本文将展示如何进行图像的显示与存储过程, 主要以 QT为例, 附带介绍一下 VS的实现方法

图像显示与存储程序

我们以上一章节的显示图像为例

一定要注意 路径的位置, windows 下面的 \ 斜杠 为 C++ 里面的转义符号, 换成 / 或者 \ 来表示

#include "mainwindow.h"
#include <QApplication>

// 引入 opencv 函数头文件
#include <opencv2/opencv.hpp>
int main(int argc, char *argv[])
### 如何在 OpenCV 中使用相对路径导入图片 在开发基于 OpenCV 的应用程序时,通常会遇到需要加载本地存储的图像文件的情况。如果希望程序能够跨平台运行或者更易于维护,则推荐使用 **相对路径** 来指定图像的位置。 #### 1. 理解相对路径的概念 相对路径是指相对于当前工作目录(working directory)的路径。当调用 `cv2.imread()` 函数时,OpenCV 尝试从当前的工作目录解析该路径[^4]。因此,在设置相对路径之前,需确认当前工作目录的位置。 可以通过以下 Python 代码查看当前工作目录: ```python import os print(os.getcwd()) ``` #### 2. 设置相对路径的方式 假设目标图像是 `image.jpg`,它位于项目的子目录 `images/` 下面: - 如果当前工作目录是项目根目录,则可以这样写相对路径: ```python image_path = "images/image.jpg" img = cv2.imread(image_path) ``` - 若当前工作目录不是项目根目录,而是其他位置,则可能需要调整路径或更改工作目录。例如,通过修改工作目录到项目根目录: ```python import os os.chdir("/path/to/project_root") # 替换为实际项目根目录路径 image_path = "images/image.jpg" img = cv2.imread(image_path) ``` #### 3. 处理 Linux 和 Windows 平台差异 不同操作系统对路径分隔符有不同的约定:Linux 使用 `/`,而 Windows 使用 `\`。为了避免兼容性问题,建议始终使用正斜杠 `/` 或者借助 `os.path.join()` 自动拼接路径字符串。 示例代码如下: ```python import os base_dir = "images" file_name = "image.jpg" image_path = os.path.join(base_dir, file_name) # 自动生成适合操作系统的路径 img = cv2.imread(image_path) if img is None: raise FileNotFoundError(f"Image not found at {image_path}") ``` #### 4. 解决常见错误 即使指定了正确的相对路径,仍可能出现无法加载图像的问题。以下是几个常见的原因及其解决方案: - **路径不正确**: 双重检查路径是否匹配文件的实际存放位置。 - **权限不足**: 确认脚本具有访问目标文件所需的权限。 - **编码问题 (针对中文路径)**: 在某些情况下,尤其是涉及非 ASCII 字符集时,可能会引发读取失败。此时可以尝试转换路径编码[^3]: ```python import sys if sys.version_info.major == 2: # 对于 Python 2.x 用户 image_path = image_path.decode(&#39;utf8&#39;) img = cv2.imdecode(np.fromfile(image_path, dtype=np.uint8), -1) ``` --- ### 总结 要成功使用相对路径导入图片,关键是理解并配置好当前工作目录,并确保路径书写无误。此外还需注意潜在的操作系统差异以及特殊字符带来的挑战。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值