示例程序010--图像缩放
用到的函数:
cvResize
void cvResize( const CvArr* src, CvArr* dst, int interpolation=CV_INTER_LINEAR );
作用:
函数cvResize 重新调整图像src(或它的ROI),使它精确匹配目标dst(或其ROI)。
参数列表:
src 源图像
dst 目标图像
interpolation 修改、插补的方法,取值如下:
·CV_INTER_NN - 最近-邻居插补
·CV_INTER_LINEAR - 双线性插值(默认方法)
·CV_INTER_AREA - 像素面积相关重采样。当缩小突刺昂视。该方法可以避免波纹的出现。当放大图像是,类似于方法CV_INTER_NN。(It is the preferred method for image decimation that gives moire-free results. In case of zooming it is similar to CV_INTER_NN method. )
·CV_INTER_CUBIC - 双三次插值。
代码:
#include "stdafx.h"
#include<cv.h>
#include<highgui.h>
int main(int argc, char* argv[])
{
IplImage *src =cvLoadImage("Lena.jpg");
IplImage *dst = 0;
double scale=0.5; //缩放倍数
CvSize dst_cvsize; //目标图像尺寸
dst_cvsize.width = src->width * scale; //目标图像的宽为源图象宽的scale倍
dst_cvsize.height=src->height * scale; //目标图像的高为源图象高的scale倍
dst = cvCreateImage( dst_cvsize, src->depth, src->nChannels); //构造目标图象
cvResize(src, dst, CV_INTER_LINEAR); //缩放源图像到目标图像
cvNamedWindow( "src", CV_WINDOW_AUTOSIZE ); //创建用于显示源图像的窗口
cvNamedWindow( "dst", CV_WINDOW_AUTOSIZE ); //创建用于显示目标图像的窗口
cvShowImage( "src", src ); //显示源图像
cvShowImage( "dst", dst ); //显示目标图像
cvWaitKey(0);
cvReleaseImage(&src);
cvReleaseImage(&dst);
cvDestroyAllWindows();
return 0;
}
}
运行结果: