温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

OpenCV C++实现图像压缩与解压

发布时间:2024-08-26 19:35:46 来源:亿速云 阅读:111 作者:小樊 栏目:编程语言

OpenCV(开源计算机视觉库)是一个用于处理图像和视频的开源库

首先,确保已经安装了OpenCV库。在Ubuntu系统上,可以使用以下命令安装:

sudo apt-get install libopencv-dev

接下来,我们将创建一个C++程序来实现图像压缩和解压。

  1. 包含必要的头文件:
#include<iostream>
#include <opencv2/opencv.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/imgproc/imgproc.hpp>
  1. 定义一个函数来执行图像压缩:
void compressImage(const cv::Mat &inputImage, cv::Mat &outputImage, int quality) {
    std::vector<int> compression_params;
    compression_params.push_back(cv::IMWRITE_JPEG_QUALITY);
    compression_params.push_back(quality);
    cv::imencode(".jpg", inputImage, outputImage, compression_params);
}

这个函数接受输入图像、输出图像和压缩质量作为参数。压缩质量是一个介于0到100之间的整数,其中100表示最高质量。

  1. 定义一个函数来执行图像解压:
void decompressImage(const cv::Mat &inputImage, cv::Mat &outputImage) {
    outputImage = cv::imdecode(inputImage, cv::IMREAD_COLOR);
}

这个函数接受输入图像和输出图像作为参数。它使用cv::imdecode函数将压缩后的图像解压回原始格式。

  1. 在主函数中调用这些函数:
int main() {
    // 读取输入图像
    cv::Mat inputImage = cv::imread("input.jpg");

    // 压缩图像
    cv::Mat compressedImage;
    compressImage(inputImage, compressedImage, 50);

    // 解压图像
    cv::Mat decompressedImage;
    decompressImage(compressedImage, decompressedImage);

    // 显示原始图像和解压后的图像
    cv::imshow("Original Image", inputImage);
    cv::imshow("Decompressed Image", decompressedImage);

    // 等待按键,然后退出
    cv::waitKey(0);
    return 0;
}

这个程序首先读取名为"input.jpg"的输入图像,然后调用compressImage函数将其压缩为JPEG格式。接下来,它调用decompressImage函数将压缩后的图像解压回原始格式。最后,它显示原始图像和解压后的图像,并等待用户按键。

注意:这个示例仅适用于JPEG格式的图像。如果要处理其他格式的图像,需要相应地修改compressImagedecompressImage函数。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

c++
AI