【OpenCV入門指南】第二篇 縮放圖像
上一篇《【OpenCV入門指南】第一篇安裝OpenCV》講解了如何在VS2008下安裝和配置OpenCV,本篇將介紹使用OpenCV來(lái)縮放圖片。首先介紹幾個(gè)關(guān)鍵函數(shù)——cvResize和cvCreateImage
《OpenCV入門指南》系列文章地址:http://blog.csdn.net/morewindows/article/category/1291764
一. 主要函數(shù)介紹
1.1 cvResize
函數(shù)功能:圖像大小變換
函數(shù)原型:
voidcvResize(
const CvArr* src,
CvArr* dst,
intinterpolation=CV_INTER_LINEAR
);
函數(shù)說(shuō)明:
第一個(gè)參數(shù)表示輸入圖像。
第二個(gè)參數(shù)表示輸出圖像。
第三個(gè)參數(shù)表示插值方法,可以有以下四種:
CV_INTER_NN - 最近鄰插值,
CV_INTER_LINEAR - 雙線性插值 (缺省使用)
CV_INTER_AREA - 使用象素關(guān)系重采樣。當(dāng)圖像縮小時(shí)候,該方法可以避免波紋出現(xiàn)。當(dāng)圖像放大時(shí),類似于 CV_INTER_NN 方法..
CV_INTER_CUBIC - 立方插值.
這個(gè)函數(shù)在功能上與Win32 API中的StretchBlt()函數(shù)類似。
1.2 cvCreateImage
函數(shù)功能:創(chuàng)建圖像
函數(shù)原型:
IplImage* cvCreateImage(CvSize size, intdepth, intchannels);
函數(shù)說(shuō)明:
第一個(gè)參數(shù)表示圖像的大小。
第二個(gè)參數(shù)表示圖像的深度,可以為IPL_DEPTH_8U,IPL_DEPTH_16U等等。
第三個(gè)參數(shù)表示圖像的通道數(shù)。
二. 示例程序代碼
有了這二個(gè)函數(shù)后,不難寫出代碼:
- //縮放圖像文件
- //By MoreWindows (http://blog.csdn.net/MoreWindows)
- #include <opencv2/opencv.hpp>
- using namespace std;
- //隱藏控制臺(tái)窗口
- #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; //縮放倍數(shù)
- CvSize czSize; //目標(biāo)圖像尺寸
-
- //從文件中讀取圖像
- IplImage *pSrcImage = cvLoadImage(pstrImageName, CV_LOAD_IMAGE_UNCHANGED);
- IplImage *pDstImage = NULL;
-
- //計(jì)算目標(biāo)圖像大小
- czSize.width = pSrcImage->width * fScale;
- czSize.height = pSrcImage->height * fScale;
-
- //創(chuàng)建圖像并縮放
- pDstImage = cvCreateImage(czSize, pSrcImage->depth, pSrcImage->nChannels);
- cvResize(pSrcImage, pDstImage, CV_INTER_AREA);
-
- //創(chuàng)建窗口
- 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;
- }
程序運(yùn)行結(jié)果如下:
本篇介紹的圖像縮放比較容易,下一篇《【OpenCV入門指南】第三篇Canny邊緣檢測(cè)》將介紹在OpenCV中使用Canny算子對(duì)圖像進(jìn)行邊緣檢測(cè),歡迎繼續(xù)瀏覽。
轉(zhuǎn)載請(qǐng)標(biāo)明出處,原文地址:http://blog.csdn.net/morewindows/article/details/8239560
《OpenCV入門指南》系列文章地址:http://blog.csdn.net/morewindows/article/category/1291764