OpenCV图像缩放函数resize()的使用
OPenCV版本:4.4
IDE:VS2017
功能描述
簡述:縮放一個圖像
函數把源圖像縮放大或縮放小到指定的大小,注意初始的dst的類型或大小不用考慮,而是從src,dsize,fx, 和fy獲取。如果你想縮放src使它適配創建前的dst,你可以像下面這樣調用函數:
// 明確指定 dsize=dst.size(); fx 和 fy可以從他計算出來.resize(src, dst, dst.size(), 0, 0, interpolation);如果要在每個方向上將圖像縮小 2 倍,你可以用以下這種方式調用函數:
// 指定 fx 和 fy 并且讓函數計算出目標圖像的大小。resize(src, dst, Size(), 0.5, 0.5, interpolation);當縮小圖像時,一般來說最好使用INTER_AREA插值,當放大圖像時,一般來說最好使用INTER_CUBIC插值(慢),或者INTER_LINEAR(快,但是看起來還OK)。
函數原型
CV_EXPORTS_W void resize( InputArray src, OutputArray dst,Size dsize, double fx = 0, double fy = 0,int interpolation = INTER_LINEAR );參數描述
-
參數 src 輸入圖像
-
參數 dst 輸出圖像, 它的大小是dsize(當他的值非零時),或者從src.size(), fx, 和 fy計算得到,dst的類型和src的類型一樣。
-
參數 dsize 輸出圖像的大小,如果它等于零,它按下面方式計算:
dsize=Size(round(fx*src.cols),round(fy*src.rows))\texttt{dsize = Size(round(fx*src.cols), round(fy*src.rows))} dsize?=?Size(round(fx*src.cols),?round(fy*src.rows))
dsize或fx和fy都必須為非零值。 -
參數 fx 沿水平軸的比例因子,當它等于0時,它按如下計算:
(double)dsize.width/src.cols\texttt{(double)dsize.width/src.cols} (double)dsize.width/src.cols -
參數 fy 沿豎直軸的比例因子,當它等于0時,它按如下計算:
(double)dsize.height/src.rows\texttt{(double)dsize.height/src.rows} (double)dsize.height/src.rows -
參數 interpolation 插值方法, 詳見 InterpolationFlags
參考:warpAffine, warpPerspective, remap
源碼示例
#include <iostream> #include <opencv2/opencv.hpp>int main() {cv::Mat image = cv::imread("D:\\OpenCVtest\\images\\juice.png");if (image.empty()){std::cout << "image read failed!" << std::endl;cv::waitKey(0);return 0;}cv::Mat imageDst;cv::Mat imageDst2;cv::resize(image, imageDst, cv::Size(0, 0), 0.5, 0.5);cv::resize(image, imageDst2, cv::Size(600, 400));cv::imshow("原圖", image);cv::imshow("長寬縮放0.5倍后的圖", imageDst);cv::imshow("長寬縮放指定長寬后的圖", imageDst2);cv::waitKey(0); }運行結果:
原圖
長寬縮放0.5倍后的圖像
縮放到指定長寬的圖像
總結
以上是生活随笔為你收集整理的OpenCV图像缩放函数resize()的使用的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: OpenCV形态学变换函数morphol
- 下一篇: OpenCV图像发现轮廓函数findCo