閑話少說,先看程式:
<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;