天天看點

【opencv2】圖檔大小轉換和圖檔的儲存

閑話少說,先看程式:

<span style="font-size:18px;">#include <string>
#include <iostream>
#include "opencv2\opencv.hpp"
using namespace cv;
using namespace std;

int main(void){

	const string imageName("2.jpg");
	Mat image = imread(imageName);  //讀取圖像
	imshow("image", image);      //顯示原圖像
	cout << imageName << "'s width is"
		<< image.size().width << endl;
	cout << imageName << "'s height is"
		<< image.size().height << endl;
	cout << image.depth() << endl;
	Mat newimage;
	resize(image,newimage,Size(500,375)); //圖像大小轉換
	
 	imshow("newimage", newimage);  //顯示變換大小後的圖像
	waitKey(0);
	imwrite("000005.jpg", newimage); //儲存圖檔
	waitKey(0);
}</span>
           

函數參數解釋:

 void resize( InputArray src, OutputArray dst, Size dsize, double fx=0, double fy=0, int interpolation=INTER_LINEAR )

src:原圖像;

dst:轉換後的圖像;

dsize:轉換後圖像的大小,其為Size類型,一般可以寫成Size(width,height),如程式中的Size(500,375);

fx:沿x軸的比例因子。如果為0,那麼計算方式為(double)dsize.width/src.cols

fy:沿y軸的比例因子。如果為0,那麼計算方式為(double)dsize.height/src.rows,一般這兩個值都去預設的0;

interpolation:插值方法,即大小轉換的方法,其值為以下幾種(預設為雙線性插值):

               INTER_NEAREST:最近領域插值方法;

             INTER_LINEAR:雙線性插值方法;                            INTER_AREA:利用區域資訊的插值方法;              INTER_CUBIC:雙立方插值方法;              INTER_LANCZOS4:蘭索斯插值方法;

bool imwrite(const string& filename, InputArray img, const vector<int>& params=vector<int>() )

filename:檔案儲存的名稱; img:        要儲存的圖檔; params;   特定格式儲存參數編碼:                 對于JPG格式(CV_IMWRITE_JPEG_QUALITY )其取值為0到100,越高越好,預設為95;          對于PNG格式(CV_IMWRITE_PNG_COMPRESSION)其值為0-9代表壓縮程度,參數越大,壓縮之後的空間越小,壓縮的時間也會越多;          對于PPM,PGM,PBM格式(CV_IMWRITE_PXM_BINARY )的檔案,其值為0-1,代表二值化的标志位,預設為1;