21xrx.com
2024-12-22 10:57:59 Sunday
登录
文章检索 我的文章 写文章
使用OpenCV C++对图像进行压缩
2023-10-28 17:56:21 深夜i     --     --
OpenCV C++ 图像 压缩 编程

图像压缩是一种常用的图像处理技术,它可以减小图像文件的大小,以节省存储空间和提高传输速度。在这篇文章中,我们将使用OpenCV C++来压缩图像。

首先,我们需要安装OpenCV库并配置C++开发环境。在此之后,我们可以开始编写代码了。

首先,我们需要导入相关的OpenCV头文件,包括core.hpp、imgcodecs.hpp和imgproc.hpp。我们还需要使用命名空间cv和std,以方便使用OpenCV的函数和STL(标准模板库)。

然后,我们可以定义一个函数compressImage,该函数将接受要压缩的图像文件路径和压缩比作为参数。在函数内部,我们首先使用imread函数读取图像文件,并将其存储在一个Mat对象中。然后,我们可以使用imwrite函数将压缩后的图像保存到指定的输出路径。

为了进行图像压缩,OpenCV提供了几种压缩算法,例如JPEG、PNG和WEBP。我们可以通过传递一个压缩参数来选择所需的算法和设置压缩比。


#include <opencv2/opencv.hpp>

using namespace cv;

using namespace std;

void compressImage(string inputPath, string outputPath, int compressionRatio)

{

  // 读取图像

  Mat image = imread(inputPath);

  // 压缩图像

  vector<int> compression_params;

  compression_params.push_back(IMWRITE_JPEG_QUALITY);

  compression_params.push_back(compressionRatio);

  // 保存压缩后的图像

  imwrite(outputPath, image, compression_params);

}

int main()

{

  string inputPath = "input.jpg";

  string outputPath = "output.jpg";

  int compressionRatio = 50;

  compressImage(inputPath, outputPath, compressionRatio);

  return 0;

}

在上面的代码中,我们首先定义了一个compressImage函数,它接受输入图像的路径、输出图像的路径和压缩比作为参数。然后,我们使用imwrite函数将压缩后的图像保存到指定的输出路径。

在主函数中,我们指定了输入图像的路径、输出图像的路径和压缩比。然后,我们调用compressImage函数进行图像压缩。

请注意,压缩比的范围是0到100,其中0表示最大压缩,100表示无压缩。

通过使用OpenCV C++库中的函数和方法,我们可以轻松地对图像进行压缩。这提供了一个简单而有效的方法来减小图像的大小,并在存储和传输中节省空间和时间。无论是在移动应用程序开发、计算机视觉还是图像处理领域,图像压缩都是一个重要的技术。

  
  

评论区

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