21xrx.com
2024-11-08 23:57:08 Friday
登录
文章检索 我的文章 写文章
C++ OpenCV 图片保存操作
2023-11-12 21:40:37 深夜i     --     --
C++ OpenCV 图片保存操作

OpenCV 是一个强大的开源计算机视觉库,它提供了许多操作图像的功能。在使用 OpenCV 进行图像处理时,我们经常需要将处理后的图像保存到文件中。在 C++ 程序中,我们可以使用 OpenCV 的 imwrite 函数来保存图像。

imwrite 函数是 OpenCV 中用于保存图像的函数,它的原型如下:


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

其中,`filename` 是保存图像的文件名,`img` 是待保存的图像,`params` 是保存参数(可选)。

我们可以使用以下代码保存一张图像:


#include <iostream>

#include <opencv2/opencv.hpp>

int main() {

  cv::Mat image = cv::imread("input.jpg"); // 读取一张图像

  if (image.empty())

    std::cout << "无法读取图像文件!" << std::endl;

    return -1;

  

  bool result = cv::imwrite("output.jpg", image); // 将图像保存为 output.jpg

  if (result)

    std::cout << "成功保存图像文件!" << std::endl;

   else

    std::cout << "保存图像文件失败!" << std::endl;

  

  return 0;

}

在上面的代码中,我们首先使用 `imread` 函数读取一张图像,并判断是否读取成功。然后,我们使用 `imwrite` 函数将图像保存为 `output.jpg`,并判断保存是否成功。

除了保存为 JPEG 图像,`imwrite` 函数还支持保存为其他格式,如 PNG、BMP、TIFF 等。要保存为其他格式,我们可以通过在文件名中指定文件扩展名来实现:


bool result = cv::imwrite("output.png", image); // 保存为 PNG 格式

bool result = cv::imwrite("output.bmp", image); // 保存为 BMP 格式

bool result = cv::imwrite("output.tiff", image); // 保存为 TIFF 格式

注意,在默认情况下,`imwrite` 函数会自动进行了压缩。如果需要保存无损的图像,我们可以通过指定保存参数来实现:


std::vector<int> params;

params.push_back(cv::IMWRITE_PNG_COMPRESSION);

params.push_back(0);

bool result = cv::imwrite("output.png", image, params); // 使用无损压缩保存为 PNG 格式

在上述代码中,我们创建了一个 `params` 向量,并将 `IMWRITE_PNG_COMPRESSION` 设置为 0,这样就实现了无损保存 PNG 格式的图像。

总结起来,C++ OpenCV 提供了 `imwrite` 函数来保存图像。我们可以通过指定保存参数来实现不同的保存方式。无论是保存为 JPEG、PNG、BMP 还是其他格式,都能满足我们对图像保存的需求。希望这篇文章对你理解 C++ OpenCV 图片保存操作有所帮助!

  
  

评论区

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