活动介绍

008_OpenCV 影像讀取儲存(imread、imshow、imwrite) _ 阿洲的程式教學1

preview
需积分: 0 0 下载量 99 浏览量 更新于2022-08-03 收藏 453KB PDF 举报
在OpenCV库中,图像处理是其核心功能之一。本文将详细介绍如何使用OpenCV的`imread`、`imshow`和`imwrite`函数来读取、显示和保存图像。这三个函数是OpenCV中处理图像的基本操作,适用于各种图像处理和计算机视觉任务。 我们需要包含必要的头文件。在C++代码中,为了使用OpenCV的所有功能,我们通常会包含`opencv2/opencv.hpp`。这样可以一次性引入所有必要的模块,避免逐个引入。 接下来,我们介绍`imread`函数。它用于从磁盘加载图像文件到内存中的`Mat`对象。`imread`函数接受两个参数:文件名和一个标志。标志用于指定读取图像的方式,例如: 1. `CV_LOAD_IMAGE_UNCHANGED`(小于0):保留图像原有的颜色空间和位深度。 2. `CV_LOAD_IMAGE_GRAYSCALE`(0):将图像转换为灰度图像。 3. `CV_LOAD_IMAGE_COLOR`(大于0):默认值,读取为BGR彩色图像。 例如,以下代码读取名为"lena.jpg"的图像,并将其作为灰度图像存储在`Mat`对象`img`中: ```cpp Mat img = imread("lena.jpg", CV_LOAD_IMAGE_GRAYSCALE); ``` 如果图像加载成功,`imread`会返回一个非空的`Mat`对象;否则,它将返回一个空的`Mat`,表示加载失败。 创建和显示图像窗口则需要使用`namedWindow`和`imshow`函数。`namedWindow`用于创建一个带有指定标题的窗口。`imshow`函数将`Mat`对象显示在这个窗口中。例如: ```cpp namedWindow("Display window", WINDOW_AUTOSIZE); imshow("Display window", img); ``` 在这里,`WINDOW_AUTOSIZE`标志意味着窗口的大小会自动调整以适应图像的尺寸。 为了在显示图像时暂停程序的执行,我们可以使用`waitKey`函数。这个函数可以让我们等待用户按键,或者在给定的延迟时间后继续执行。例如,`waitKey(0)`会一直等待,直到用户按下任意键。这对于在窗口中显示图像特别有用,因为如果不使用`waitKey`,程序会立即结束,而图像窗口也会随即关闭。 在显示图像的过程中,我们可以利用`waitKey`的返回值来判断用户是否按下了特定键。例如,通常ESC键(ASCII码为27)用来关闭显示窗口: ```cpp while (true) { imshow("Display window", img); if (waitKey(10) == 27) { // 如果按下ESC键,退出循环 break; } } ``` `imwrite`函数用于将`Mat`对象写入磁盘。它接受文件名和要保存的`Mat`对象,可以保存为多种常见的图像格式,如BMP、JPEG、PNG等。例如,以下代码将`img`保存为JPEG格式的文件: ```cpp imwrite("output.jpg", img); ``` 总结来说,`imread`、`imshow`和`imwrite`是OpenCV中处理图像的基础。`imread`用于读取图像,`imshow`用于在窗口中显示图像,而`imwrite`则用于将图像保存到磁盘。通过这些基本操作,我们可以进行更复杂的图像处理和分析任务。
身份认证 购VIP最低享 7 折!
30元优惠券