OpenCV C++ 实例:读取与保存图像

1星 需积分: 47 52 下载量 119 浏览量 更新于2024-09-11 收藏 591B TXT 举报
"本示例展示了如何在C++中使用OpenCV库来读取和保存图像,特别是将彩色图像转换为灰度图像并进行显示。" 在计算机视觉领域,OpenCV是一个广泛使用的开源库,它提供了丰富的功能,包括图像处理、特征检测、对象识别等。在C++编程环境中,OpenCV可以方便地读取、操作和保存图片。以下是对给定代码的详细解释: 1. **包含头文件**: - `#include<cv.h>` 和 `#include<highgui.h>` 是OpenCV库的基本头文件,分别包含了核心功能和用户界面相关的函数定义。 2. **命名空间cv的使用**: - `using namespace cv;` 这一行声明了使用cv命名空间,这样可以避免在代码中频繁地写`cv::`前缀。 3. **主函数`main()`**: - 这是程序的入口点,所有操作都在这里开始。 4. **定义变量**: - `const char* imageName = "5.jpg";` 定义了一个字符串指针,用于存储图像文件的路径。 - `Mat image;` 和 `Mat gray_image;` 分别创建了两个OpenCV的`Mat`对象,`Mat`是OpenCV中的基本数据结构,用于表示图像。 5. **读取图像**: - `image = imread(imageName);` 使用`imread`函数读取指定路径的图像文件。如果读取成功,`image`将包含图像数据;否则,`image.data`将为`NULL`。 6. **错误处理**: - `if (!image.data) { printf("No image data\n"); return -1; }` 检查是否成功读取到图像数据,如果没有,打印错误信息并返回-1。 7. **图像转换**: - `cvtColor(image, gray_image, CV_BGR2GRAY);` 使用`cvtColor`函数将彩色图像(BGR格式)转换为灰度图像。 8. **保存图像**: - `imwrite("E:\\VS2010\HistEqua\HistEqua\Gray_Image.jpg", gray_image);` 使用`imwrite`函数将灰度图像保存到指定路径。 9. **显示图像**: - `namedWindow(imageName, CV_WINDOW_AUTOSIZE);` 和 `namedWindow("Grayimage", CV_WINDOW_AUTOSIZE);` 创建两个窗口,分别显示原始图像和灰度图像。 - `imshow(imageName, image);` 和 `imshow("Grayimage", gray_image);` 在对应的窗口中显示图像。 10. **等待用户按键**: - `waitKey(0);` 这行代码会暂停程序执行,直到用户按下任意键。这在显示图像时非常有用,因为不加此行,窗口会立即关闭。 11. **程序结束**: - `return 0;` 表示程序正常结束。 通过这段代码,我们可以了解到OpenCV在C++环境下的基本图像操作流程,包括读取、转换和保存图像以及在窗口中显示图像。这对于任何涉及图像处理的项目都是至关重要的基础知识。