opencv基于c++个人笔记总结

### OpenCV 基于 C++ 的个人笔记总结 #### 环境配置与注意事项 在使用 OpenCV 进行 C++ 编程时,首先需要确保开发环境正确配置。这里提到的一些细节对于初学者来说非常重要: - **路径中斜杠的使用**:在不同的操作系统中,文件路径中的斜杠有所不同。Windows 使用 `\`,而 Linux 和 Unix 使用 `/`。在 C++ 中,由于 `\` 也是转义字符的一部分,因此在 Windows 下,文件路径中的 `\` 需要使用 `\\` 来表示。例如,`"c:\\kkk\\dd.txt"`。而对于 `/`,则不需要转义,如 `"c:/kkk/dd.txt"`。 #### 第一课:读取与显示图像 在 OpenCV 中,读取和显示图像是非常基础且常用的操作。本节将详细介绍如何实现这些功能。 - **读取图像**:`imread` - `imread` 函数用于加载图像文件并将其转换为 `Mat` 对象。该函数接受两个参数:图像文件名和图像颜色模式。 - 第一个参数表示图像文件的路径。 - 第二个参数指定图像的加载方式: - `IMREAD_UNCHANGED(<0)`:保持原始图像的颜色模式。 - `IMREAD_GRAYSCALE(0)`:将图像转换为灰度图像。 - `IMREAD_COLOR(>0)`:将图像转换为彩色图像(默认)。 - **显示图像**:`imshow` - `imshow` 函数用于显示图像。它接受两个参数:窗口名称和图像的 `Mat` 对象。 - 格式:`imshow("窗口名称", 图像的数据对象);` - 在调用 `imshow` 后,通常会跟随 `waitKey()` 函数来控制显示时间。 - `waitKey(0)`:等待无限时间直到用户按键。 - `waitKey(1)`:等待 1 毫秒后继续执行。 - **销毁窗口**:`destroyAllWindows()` - 如果需要销毁所有已创建的窗口,可以使用 `destroyAllWindows()` 函数。 - **创建窗口**:`namedWindow` - 使用 `namedWindow` 创建窗口时,需要指定窗口名称和窗口属性(如大小调整模式)。 - 窗口 Flags 可以设置为 `WINDOW_AUTOSIZE` 或 `WINDOW_FREERATIO` 等。 #### 第二课:图像色彩空间转换 在图像处理中,不同的色彩空间有着不同的用途。OpenCV 提供了多种转换方式,本节介绍几种常用的色彩空间转换方法。 - **色彩空间转换**:`cvtColor` - `cvtColor` 函数用于将图像从一种色彩空间转换到另一种色彩空间。 - 常见的色彩空间转换包括: - `COLOR_BGR2GRAY`:将彩色图像转换为灰度图像。 - `COLOR_GRAY2BGR`:将灰度图像转换为彩色图像。 - `COLOR_BGR2HSV`:将 BGR 色彩空间转换为 HSV 色彩空间。 - `COLOR_HSV2BGR`:将 HSV 色彩空间转换回 BGR 色彩空间。 - **保存图像**:`imwrite` - `imwrite` 函数用于将图像保存到文件中。该函数接受两个参数:保存路径和 `Mat` 对象。 #### 第三课:图像的创建与赋值 本节介绍如何在 C++ 中使用 OpenCV 创建和操作图像。 - **Mat 对象与创建** - `Mat` 是 OpenCV 中用于表示图像的核心数据结构。 - 常见的创建方法包括克隆 (`src.clone()`)、复制 (`src.copyTo()`) 和直接赋值。 - 创建空白图像可以通过直接初始化 `Mat` 实现。 - **Mat 的基本结构** - 包括数据部分(像素值集合)和头部(存储图像属性如宽度、高度等)。 - **Mat 与 IplImage** - `Mat` 是 OpenCV 2.0 之后引入的数据结构,面向对象,自动管理内存。 - `IplImage` 是早期版本中使用的数据结构,需要手动管理内存。 #### 第四课:矩阵的掩膜操作 - **获取图像像素指针** - 通过 `Mat.ptr<uchar>(int i = 0)` 获取图像的像素指针,其中 `i` 表示要访问的行索引。 以上就是 OpenCV 基于 C++ 的一些基础知识点,涵盖了从环境配置到基本图像操作的各个方面。这对于初学者来说是非常重要的入门知识。通过理解这些概念,可以为进一步深入学习 OpenCV 和图像处理打下坚实的基础。
















- maXZero2023-07-24作者用简洁的语言描述了Opencv的基础知识,让读者能够轻松理解。
- 养生的控制人2023-07-24这篇笔记总结了Opencv在C语言下的基础知识,对于初学者来说非常友好。
- 懂得越多越要学2023-07-24笔记中提供了很多实际的例子和代码片段,让读者更容易理解。
- ali-122023-07-24这篇文件有效地总结了Opencv的关键概念和常用功能。
- wxb0cf756a5ebe75e92023-07-24作者对Opencv的介绍十分详细,可以帮助读者快速上手。

- 粉丝: 117
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助


最新资源


