1. 程式人生 > >【OpenCV學習】縮放影象

【OpenCV學習】縮放影象

《OpenCV入門指南》系列文章地址:http://blog.csdn.net/morewindows/article/category/1291764

 一. 主要函式介紹 1.1 cvResize 函式功能:影象大小變換

函式原型:

voidcvResize(

  const CvArr* src,

  CvArr* dst,

  intinterpolation=CV_INTER_LINEAR

);

函式說明:

第一個引數表示輸入影象。

第二個引數表示輸出影象。

第三個引數表示插值方法,可以有以下四種:

CV_INTER_NN - 最近鄰插值,

CV_INTER_LINEAR - 雙線性插值 (預設使用)

CV_INTER_AREA - 使用象素關係重取樣。當影象縮小時候,該方法可以避免波紋出現。當影象放大時,類似於 CV_INTER_NN 方法..

CV_INTER_CUBIC - 立方插值.

這個函式在功能上與Win32 API中的StretchBlt()函式類似。

1.2 cvCreateImage 函式功能:建立影象

函式原型:

IplImage* cvCreateImage(CvSize size, intdepth, intchannels);

函式說明:

第一個引數表示影象的大小。

第二個引數表示影象的深度,可以為IPL_DEPTH_8U,IPL_DEPTH_16U等等。

第三個引數表示影象的通道數。

二. 示例程式程式碼 有了這二個函式後,不難寫出程式碼:

//縮放影象檔案 //By MoreWindows (http://blog.csdn.net/MoreWindows) #include <opencv2/opencv.hpp> using namespace std; //隱藏控制檯視窗 #pragma comment(linker, "/subsystem:\"windows\" /entry:\"mainCRTStartup\"") int main() {     const char *pstrImageName = "衝浪大師賽001.jpg";     const char *pstrSaveImageName = "衝浪大師賽001縮放圖.jpg";     const char *pstrWindowsSrcTitle = "原圖 (http://blog.csdn.net/MoreWindows)";     const char *pstrWindowsDstTitle = "縮放圖 (http://blog.csdn.net/MoreWindows)";          double fScale = 0.314;        //縮放倍數     CvSize czSize;                //目標影象尺寸          //從檔案中讀取影象       IplImage *pSrcImage = cvLoadImage(pstrImageName, CV_LOAD_IMAGE_UNCHANGED);     IplImage *pDstImage = NULL;              //計算目標影象大小     czSize.width = pSrcImage->width * fScale;     czSize.height = pSrcImage->height * fScale;          //建立影象並縮放     pDstImage = cvCreateImage(czSize, pSrcImage->depth, pSrcImage->nChannels);     cvResize(pSrcImage, pDstImage, CV_INTER_AREA);          //建立視窗     cvNamedWindow(pstrWindowsSrcTitle, CV_WINDOW_AUTOSIZE);     cvNamedWindow(pstrWindowsDstTitle, CV_WINDOW_AUTOSIZE);          //在指定視窗中顯示影象     cvShowImage(pstrWindowsSrcTitle, pSrcImage);     cvShowImage(pstrWindowsDstTitle, pDstImage);          //等待按鍵事件     cvWaitKey();          //儲存圖片     cvSaveImage(pstrSaveImageName, pDstImage);          cvDestroyWindow(pstrWindowsSrcTitle);     cvDestroyWindow(pstrWindowsDstTitle);     cvReleaseImage(&pSrcImage);     cvReleaseImage(&pDstImage);     return 0; } 程式執行結果如下:

本篇介紹的影象縮放比較容易,下一篇《【OpenCV入門指南】第三篇Canny邊緣檢測》將介紹在OpenCV中使用Canny運算元對影象進行邊緣檢測,歡迎繼續瀏覽。

原文地址:http://blog.csdn.net/morewindows/article/details/8239560

《OpenCV入門指南》系列文章地址:http://blog.csdn.net/morewindows/article/category/1291764