OpenCV图像处理基础:输入输出与基本操作

需积分: 10 1 下载量 16 浏览量 更新于2024-07-20 收藏 154KB PDF 举报
"OpenCV使用文档,2.4.9.0版本,2014年4月15日发布" OpenCV(开源计算机视觉库)是一个强大的跨平台计算机视觉库,它包含了各种用于处理图像和视频的算法。这份官方文档是学习和使用OpenCV的重要资源。 **1. 操作图像** **1.1 输入/输出** 在OpenCV中,你可以使用`imread()`函数从文件加载图像。默认情况下,如果读取的是jpg文件,会创建一个包含3个通道(RGB)的图像。如果你希望得到灰度图像,可以传入第二个参数0: ```cpp Mat img = imread(filename); // 加载为灰度图像 Mat img_gray = imread(filename, 0); ``` 保存图像则使用`imwrite()`函数,指定文件名和要保存的图像: ```cpp imwrite(filename, img); ``` 注意,文件格式由其内容决定,而文件扩展名用于确定保存的格式。如果你想从内存中读写图像,可以使用`imdecode()`和`imencode()`函数。 **1.2 基本图像操作** **访问像素值** 在OpenCV中,图像被表示为`Mat`对象,你可以通过索引来访问和修改像素值。例如,对于一个灰度图像,像素值可以直接访问: ```cpp uchar value = img_gray.at<uchar>(row, col); // 修改像素值 img_gray.at<uchar>(row, col) = new_value; ``` 对于彩色图像,每个像素由3个分量(BGR)组成,可以通过以下方式访问: ```cpp Vec3b pixel = img.at<Vec3b>(row, col); // 修改BGR分量 img.at<Vec3b>(row, col)[0] = blue; // B img.at<Vec3b>(row, col)[1] = green; // G img.at<Vec3b>(row, col)[2] = red; // R ``` **图像转换** OpenCV提供了多种图像转换功能,如颜色空间转换、缩放、旋转、平移等。例如,将BGR图像转换为灰度图像: ```cpp cvtColor(img, img_gray, COLOR_BGR2GRAY); ``` **2. 特征2D** OpenCV支持多种关键点检测器(如SIFT、SURF、ORB等)、描述符(如SIFT、SURF、ORB等)和关键点匹配。这些特性在图像识别、物体检测和追踪等任务中非常有用。 **3. 高级GUI** OpenCV提供了高级图形用户界面(GUI)功能,可以用于显示图像、视频以及与用户交互。例如,使用`imshow()`函数显示图像: ```cpp imshow("WindowName", img); waitKey(); ``` **4. 级联分类器训练** 级联分类器常用于人脸检测和其他物体检测。文档中详细介绍了训练数据的准备、特征提取和级联分类器的训练过程。 **5. 高级GUI(重复标签)** 这部分可能是一个错误,因为高GUI部分已经出现在了第3章。这里可能提到的是与其他深度传感器(如Kinect、Creative Senz3D)的兼容性。 **参考文献** 在文档末尾列出了相关的参考文献,供深入研究。 以上只是OpenCV功能的一部分,完整的库还包括图像处理、机器学习、视频分析等众多功能。OpenCV的丰富特性和强大能力使其成为计算机视觉领域不可或缺的工具。