OpenCV有remap()函式可進行廣泛的幾何轉換,但如果只是單純的影像縮小放大,沒有任何的旋轉、平移或映射,resize()函式更易使用,且花費時間更少。
void resize(InputArray src, OutputArray dst, Size dsize, double fx=0, double fy=0, int interpolation=INTER_LINEAR)
輸入圖。輸出圖:型態會和輸入圖相同,當dsize不等於0,輸出圖尺寸會和dsize相同,當dsize等於0,輸出圖尺寸會由輸入圖尺寸、fx、fy計算而得。 dsize:輸出尺寸,當輸入為0時,fx、fy皆不可為0,dsize=Size(round(fxsrc.cols), round(fysrc.rows))fx:水平縮放比率,當輸入為0時,fx=(double)dsize.width/src.cols。fy:垂直縮放比率,當輸入為0時,fy=(double)dsize.height/src.rows。interpolation:內插方式。內插方式有以下幾種可選:
CV_INTER_NEAREST :最鄰近插點法。CV_INTER_LINEAR :雙線性插補(預設)。CV_INTER_AREA :臨域像素再取樣插補。CV_INTER_CUBIC :雙立方插補,4×4大小的補點。CV_INTER_LANCZOS4 :Lanczos插補,8×8大小的補點。當我們縮小影像時,使用CV_INTER_AREA會有比較好的效果,當我們放大影像,CV_INTER_CUBIC會有最好的效果,但是計算花費時間較多,CV_INTER_LINEAR能在影像品質和花費時間上取得不錯的平衡。
转自:http://monkeycoding.com/?p=609