//cvResize函數原型
void cvResize( const CvArr* src, CvArr* dst, int interpolation=CV_INTER_LINEAR );
src:輸入圖像.(IplImage)
dst:輸出圖像.(IplImage)
interpolation:差值方法:
CV_INTER_NN - 最近鄰差值
CV_INTER_LINEAR - 雙線性差值 (缺省使用)
CV_INTER_AREA - 使用象素關系重采樣。當圖像縮小時候,該方法可以避免波紋出現。當圖像放大時,類似於 CV_INTER_NN 方法
CV_INTER_CUBIC - 立方差值
函數cvResize 將圖像 src 改變尺寸得到與 dst 同樣大小。若設定ROI,函數將按常規支持 ROI.
使用C++編程時使用resize函數進行圖像縮放
//resize函原型
CV_EXPORTS_W void resize( InputArray src, OutputArray dst, Size dsize, double fx=0, double fy=0, int interpolation=INTER_LINEAR );
注:dsize與(fx,fy)不能同時為0
示例程序:
使用ubuntu14.04+OpenCV 3.1.0
/**------------------------------------------------------------------**/ /**描述:包含程序所依賴的頭文件**/ /**------------------------------------------------------------------**/ #include <opencv2/opencv.hpp> #include <opencv2/highgui/highgui.hpp> #include <opencv2/imgproc/imgproc.hpp> #include <string> /**------------------------------------------------------------------**/ /**描述:程序所用的命名空間**/ /**------------------------------------------------------------------**/ using namespace cv; using namespace std; /**------------------------------------------------------------------**/ /**描述:系統全局常量**/ /**------------------------------------------------------------------**/ //目標圖片的文件名,需要放置在工程目錄下 const string TagrImg = "Angelababy.jpeg"; //定義窗口標題 const char SrcWinNa[] = "SrcWindow"; const char GryWinNa[] = "GryWindow"; const char ResWinNa[] = "ResWindow"; /**------------------------------------------------------------------**/ /**描述:系統全局變量**/ /**------------------------------------------------------------------**/ //放縮倍數 double scale=0.4; int main(int argc, char **argv) { /**原圖像的讀取及顯示-----------------------------------------------**/ //讀取圖片 Mat SrcImg = imread(TagrImg); //檢查是否讀取成功 if(!SrcImg.data) { cout<<"讀取失敗,程序流產"<<endl; cout<<"請檢查工程目錄下是否存在"<<TagrImg<<endl; return -1; } //創建窗口顯示原圖像 cvNamedWindow(SrcWinNa, CV_WINDOW_AUTOSIZE); imshow(SrcWinNa, SrcImg); /**圖片縮放及顯示--------------------------------------------------**/ //設置縮放后的圖片的尺寸 Size ResImgSiz = Size(SrcImg.cols*scale, SrcImg.rows*scale); Mat ResImg = Mat(ResImgSiz, SrcImg.type()); resize(SrcImg, ResImg, ResImgSiz, CV_INTER_CUBIC); //創建窗口用於顯示縮放后的圖像 cvNamedWindow(ResWinNa, CV_WINDOW_AUTOSIZE); imshow(ResWinNa, ResImg); cvWaitKey(0); return 1; }
將圖片縮小到0.5倍的效果圖: