opencv-resize()-重新設置圖像大小操作


函數功能:縮小或者放大函數至某一個大小

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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM