直播系統原始碼,快速實現改變圖片尺寸

zhibo系統開發發表於2022-02-24

直播系統原始碼,快速實現改變圖片尺寸實現的相關程式碼

函式原型

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

引數

src:輸入原影像,即待被改變大小的影像;
dst:輸出改變大小之後的影像;
dsize:設定輸出影像的大小。如果這個引數不為0,那麼就代表將原影像縮放到這個Size(width,height)指定的大小;如果這個引數為0,那麼原影像縮放之後的大小就要通過下面的公式來計算:
dsize = Size(round(fx*src.cols), round(fy*src.rows))
其中,fx和fy就是下面要說的兩個引數,是影像width方向和height方向的縮放比例。
fx:width方向的縮放比例,如果它是0,那麼它就會按照(double)dsize.width/src.cols來計算;
fy:height方向的縮放比例,如果它是0,那麼它就會按照(double)dsize.height/src.rows來計算;
interpolation:這個是指定插值的方式,影像縮放之後,肯定畫素要進行重新計算的,就靠這個引數來指定重新計算畫素的方式,有以下幾種:
INTER_NEAREST - 最鄰近插值
INTER_LINEAR - 雙線性插值,如果最後一個引數你不指定,預設使用這種方法
INTER_AREA - 利用畫素面積關係重取樣。這可能是一種理想的影像抽取方法,因為它提供無莫爾的結果。但當影像縮放時,它與INTER_NEAREST方法相似。
INTER_CUBIC - 4x4畫素鄰域內的雙立方插值
INTER_LANCZOS4 - 8x8畫素鄰域內的Lanczos插值

注意

dsize和fx/fy不能同時為0

插值方法,一般預設INTER_LINEAR 。

demo
cv::Mat src = cv::imread("E:\\Windowstest\\ConsoleApplication4\\ycy.jpg", 1);
cv::Mat dst;
cv::resize(src, dst, cv::Size(300,300), 0, 0, 0);
cv:namedWindow("result", 1);
cv::imshow("result", src);
cv::namedWindow("dst", 1);
cv::imshow("dst", dst);

以上就是直播系統原始碼,快速實現改變圖片尺寸實現的相關程式碼, 更多內容歡迎關注之後的文章


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69978258/viewspace-2857620/,如需轉載,請註明出處,否則將追究法律責任。

相關文章