OpenCV C++ 实例:读取与保存图像
1星 需积分: 47 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++环境下的基本图像操作流程,包括读取、转换和保存图像以及在窗口中显示图像。这对于任何涉及图像处理的项目都是至关重要的基础知识。
2019-03-19 上传
2023-03-22 上传
2023-07-15 上传
2023-05-18 上传
2024-01-26 上传
2024-05-21 上传
2023-07-11 上传
diweishuji01
- 粉丝: 0
- 资源: 6
最新资源
- C++标准程序库:权威指南
- Java解惑:奇数判断误区与改进方法
- C++编程必读:20种设计模式详解与实战
- LM3S8962微控制器数据手册
- 51单片机C语言实战教程:从入门到精通
- Spring3.0权威指南:JavaEE6实战
- Win32多线程程序设计详解
- Lucene2.9.1开发全攻略:从环境配置到索引创建
- 内存虚拟硬盘技术:提升电脑速度的秘密武器
- Java操作数据库:保存与显示图片到数据库及页面
- ISO14001:2004环境管理体系要求详解
- ShopExV4.8二次开发详解
- 企业形象与产品推广一站式网站建设技术方案揭秘
- Shopex二次开发:触发器与控制器重定向技术详解
- FPGA开发实战指南:创新设计与进阶技巧
- ShopExV4.8二次开发入门:解决升级问题与功能扩展