溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

OpenCV C++實現(xiàn)圖像壓縮與解壓

發(fā)布時間:2024-08-26 19:35:46 來源:億速云 閱讀:86 作者:小樊 欄目:編程語言

OpenCV(開源計算機視覺庫)是一個用于處理圖像和視頻的開源庫

首先,確保已經(jīng)安裝了OpenCV庫。在Ubuntu系統(tǒng)上,可以使用以下命令安裝:

sudo apt-get install libopencv-dev

接下來,我們將創(chuàng)建一個C++程序來實現(xiàn)圖像壓縮和解壓。

  1. 包含必要的頭文件:
#include<iostream>
#include <opencv2/opencv.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/imgproc/imgproc.hpp>
  1. 定義一個函數(shù)來執(zhí)行圖像壓縮:
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);
}

這個函數(shù)接受輸入圖像、輸出圖像和壓縮質(zhì)量作為參數(shù)。壓縮質(zhì)量是一個介于0到100之間的整數(shù),其中100表示最高質(zhì)量。

  1. 定義一個函數(shù)來執(zhí)行圖像解壓:
void decompressImage(const cv::Mat &inputImage, cv::Mat &outputImage) {
    outputImage = cv::imdecode(inputImage, cv::IMREAD_COLOR);
}

這個函數(shù)接受輸入圖像和輸出圖像作為參數(shù)。它使用cv::imdecode函數(shù)將壓縮后的圖像解壓回原始格式。

  1. 在主函數(shù)中調(diào)用這些函數(shù):
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"的輸入圖像,然后調(diào)用compressImage函數(shù)將其壓縮為JPEG格式。接下來,它調(diào)用decompressImage函數(shù)將壓縮后的圖像解壓回原始格式。最后,它顯示原始圖像和解壓后的圖像,并等待用戶按鍵。

注意:這個示例僅適用于JPEG格式的圖像。如果要處理其他格式的圖像,需要相應地修改compressImagedecompressImage函數(shù)。

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權內(nèi)容。

c++
AI