1. 程式人生 > >imwrite調整儲存的圖片質量

imwrite調整儲存的圖片質量

要改變儲存的圖片的質量,關鍵在於imwrite函式的第三個引數。

先看imwrite的宣告

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

第三個引數說明:const std::vector

  • 對於JPEG格式的圖片,這個引數表示從0-100的圖片質量(CV_IMWRITE_JPEG_QUALITY),預設值是95.

  • 對於PNG格式的圖片,這個引數表示壓縮級別(CV_IMWRITE_PNG_COMPRESSION)從0-9.較高的值意味著更小的尺寸和更長的壓縮時間而預設值是3.

  • 對於PPM,PGM或PBM格式的圖片,這個引數表示一個二進位制格式標誌(CV_IMWRITE_PXM_BINARY),取值為0或1,而預設值為1.

如果操作的而是png格式的影象,我們同樣可以調整其儲存的質量。

#include<opencv2\opencv.hpp>   
#include<opencv2\highgui\highgui.hpp>

using namespace std;
using namespace cv;


int main(int argc, char** argv)
{
    Mat img = imread("src1.jpg");

    vector<int> compression_params;
    compression_params.push_back(CV_IMWRITE_PNG_COMPRESSION); //PNG格式圖片的壓縮級別  
    compression_params.push_back(9);  //這裡設定儲存的影象質量級別

    imwrite("test3.png", img,compression_params);

    return 0;
}

那如何不損失圖片質量地儲存圖片,那就得將圖片儲存為其他格式的圖片了。現在,就簡單介紹一下我最常用的圖片格式以及他們的特點: