源码
#include <iostream>
#include <opencv2/core/core.hpp>
#include <opencv2/imgproc/imgproc.hpp>
#include <opencv2/highgui/highgui.hpp>
#include<opencv2/opencv.hpp>
using namespace std;
using namespace cv;
int main()
{
// cvLoadImage( filename, -1 ); 默认读取图像的原通道数
// cvLoadImage( filename, 0 ); 强制转化读取图像为灰度图
// cvLoadImage( filename, 1 ); 读取彩色图
IplImage * srcImg=cvLoadImage("1.jpg",-1);
IplImage *detImg=NULL;
CvSize size;
double scale=0.314;
size.width=srcImg->width*scale;
size.height=srcImg->height*scale;
//创建图片并缩放
detImg=cvCreateImage(size,srcImg->depth,srcImg->nChannels);
// ·CV_INTER_NN - 最近-邻居插补
// ·CV_INTER_LINEAR - 双线性插值(默认方法)
// ·CV_INTER_AREA - 像素面积相关重采样。当缩小图像时,该方法可以避免波纹的出现。当放大图像时,类似于方法CV_INTER_NN。
// ·CV_INTER_CUBIC - 双三次插值。)
cvResize( srcImg,detImg,CV_INTER_AREA);
const char *srcWin="image";//必须是const char*类型
const char* detWin="scaled";
//创建窗口
cvNamedWindow(srcWin,CV_WINDOW_AUTOSIZE);
cvNamedWindow(detWin,CV_WINDOW_AUTOSIZE);
//在指定窗口中显示图像
cvShowImage(srcWin,srcImg);
cvShowImage(detWin,detImg );
//等待按键事件
cvWaitKey();
const char *saveName="scaled.jpg";
//保存图片
cvSaveImage(saveName, detImg);
//不要忘记释放 否则会内存泄露
cvDestroyWindow(srcWin);
cvDestroyWindow(detWin);
cvReleaseImage(&srcImg);
cvReleaseImage(&detImg);
return 0;
}
执行结果