函數功能:縮小或者放大函數至某一個大小
1 void resize( InputArray src, OutputArray dst, 2 Size dsize, double fx = 0, double fy = 0, 3 int interpolation = INTER_LINEAR );
參數列表:
src:輸入,原圖像,即待改變大小的圖像
dst:輸出,改變大小之后的圖像,這個圖象和原圖像具有相同的內容,只是大小和原圖像不一樣
dsize:輸出圖像的大小。
如果此數值不為0,那么就代表將圖像縮放到Size(width,height)指定大小;
如果為0,原圖像就通過下面的公式來計算:
dsize = Size(round(fx*src.cols),round(fy*src.rows))
fx:width方向的縮放比例,如果它是0,那么它就會按照(double)dsize.width / src.cols來計算;
fy:height方向的縮放比例,如果它是0,那么它就會按照(double)dsize.height / src.rows來計算;
interpolation:這個是指插值的方式,圖像縮放后,要對像素重新計算,就靠這個參數來指定重新計算像素的方式,有以下幾種:
INTER_NEAREST - 最鄰近插值
INTER_LINEAR - 雙線性插值,如果最后一個參數你不指定,默認使用這種方法
INTER_AREA
INTER_CUBIC - 4x4像素領域內的雙立方插值
INTER_LANCZOS4 - 8x8像素鄰域內的Lanczos插值
幾種常用方法的效率是:最鄰近插值 > 雙線性插值 > 雙立方插值 > Lanczons插值;
效率和效果成反比
1 int w = image.cols;//列 2 int h = image.rows;//行 3 4 Mat dst(w,h,image.type()); 5 6 resize(image, dst, Size(w / 2, h / 2),0,0,INTER_LINEAR); 7 //resize(image,dst,Size(0,0),0.5,0.5,INTER_LINEAR); 8 9 imshow("重新定義圖像的大小", dst);
參考:https://www.jianshu.com/p/11879a49d1a0