21xrx.com
2024-12-22 10:58:49 Sunday
登录
文章检索 我的文章 写文章
OpenCV中imwrite函数的使用方法指南
2023-10-30 05:31:58 深夜i     --     --
OpenCV中 imwrite函数 使用方法 指南

OpenCV是一个开源的计算机视觉库,提供了许多图像处理和计算机视觉算法。其中,imwrite函数是其核心功能之一,用于将图像保存到硬盘上。

imwrite函数的使用方法非常简单,其基本形式为:


bool imwrite(const String& filename, InputArray img, const std::vector<int>& params=std::vector<int>())

其中,`filename`是要保存的图像文件名,`img`是要保存的图像对象,`params`是一个可选参数,用于指定保存图像的特定格式和压缩质量。

首先,我们需要包含`opencv2/opencv.hpp`头文件和命名空间`cv`:


#include <opencv2/opencv.hpp>

using namespace cv;

然后,我们就可以使用imwrite函数了。下面是一个例子,在保存图像时,我们可以指定保存为JPEG格式以及设置压缩质量(0-100之间的整数值):


Mat img = imread("input.jpg"); // 读取图像

bool success = imwrite("output.jpg", img, CV_IMWRITE_JPEG_QUALITY); // 保存图像

if (success)

  cout << "图像保存成功!" << endl;

else

  cout << "图像保存失败!" << endl;

上面的例子中,我们首先使用imread函数读取了名为`input.jpg`的图像,并将其存储在一个名为`img`的Mat对象中。然后,使用imwrite函数将`img`保存到名为`output.jpg`的图像文件中,并指定了JPEG格式和压缩质量为90。最后,根据函数返回值,我们可以判断图像是否保存成功。

此外,imwrite函数还支持其他一些参数,用于保存图像的特定格式。例如,我们可以使用`CV_IMWRITE_PNG_COMPRESSION`参数指定PNG格式的压缩级别,范围为0-9:


bool success = imwrite("output.png", img, 5 );

在某些情况下,我们可能需要为所保存的图像生成一些元数据。我们可以使用`params`参数来指定这些元数据。例如,我们可以添加图像的创建时间和作者信息:


std::vector<int> params = CV_IMWRITE_JPEG_QUALITY;

bool success = imwrite("output.jpg", img, params);

在这个例子中,我们添加了一个`CV_IMWRITE_JPEG_EXIF_STR`参数,它指定了EXIF数据格式,并将其值设置为1,以启用EXIF元数据。

总的来说,imwrite函数是OpenCV图像处理中一个非常重要的函数,可以帮助我们将图像保存到硬盘上,并通过一些可选参数,指定保存图像的特定格式和元数据。通过合理地使用该函数,我们可以更好地应用OpenCV进行图像处理和计算机视觉任务。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复