本节简单的介绍如何将一个图像的大小变为一半。源代码如下:
//
// main.cpp
// Shrink_Size
//
// Created by 黄露 on 16/3/21.
// Copyright © 2016年 huanglu_thu13. All rights reserved.
//
#include "cv.h"
#include "highgui.h"
int main(int argc, const char * argv[]) {
//创建两个窗口显示处理前后的图片
cvNamedWindow("Imgae Before Processing");
cvNamedWindow("Image After Processing");
//创建图像指针,加载图像至内存
IplImage * in = cvLoadImage("/Users/huanglu/Pictures/thusada.jpg",1);
//创建一个图像来存储处理后的图片
IplImage * out = cvCreateImage(cvSize(in->width/2, in->height/2), in->depth, in->nChannels);
//调用cvPyrDown将图片的大小减半
cvPyrDown(in, out);
//显示处理前后的图片
cvShowImage("Imgae Before Processing", in);
cvShowImage("Imgae After Processing", out);
//释放图像指针
cvReleaseImage(&in);
cvReleaseImage(&out);
//等待用户输入任意键结束
cvWaitKey();
//释放两个窗口
cvDestroyWindow("Imgae Before Processing");
cvDestroyWindow("Imgae After Processing");
return 0;
}
这里利用cvPyrDown将图片的大小减半,其使用Gaussian金字塔分解对输入图像向下采样,声明为:
void cvPyrDown(const CvArr*src,CvArr*dst,int filter=CV_GAUSSIAN_5x5);
其中filter表示卷积滤波器类型,目前仅支持CV_GAUSSIAN_5x5。运行结果如下: