imwrite調整儲存的圖片質量
阿新 • • 發佈:2019-01-25
要改變儲存的圖片的質量,關鍵在於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; }
那如何不損失圖片質量地儲存圖片,那就得將圖片儲存為其他格式的圖片了。現在,就簡單介紹一下我最常用的圖片格式以及他們的特點: