【opencv】关于用cvPyrDown()创建一幅宽度和高度为输入图像一半尺寸的图像的问题

#include "highgui.h"
#include "cv.h"

IplImage* doPyrDown(IplImage* in,int filter =IPL_GAUSSIAN_5x5){
assert( in->width%2 == 0 && in->height%2 == 0 );
IplImage* out =cvCreateImage(
cvSize(in->width/2,in->height/2 ),
in->depth,
in->nChannels
);
cvPyrDown( in, out, IPL_GAUSSIAN_5x5 );
return( out );
}

int main()
{
const char* filename="/root/14160262Z-5.jpg";
IplImage* img = cvLoadImage(filename);
cvNamedWindow("Input", CV_WINDOW_AUTOSIZE);
cvNamedWindow("Output",CV_WINDOW_AUTOSIZE);
cvShowImage("Input",img);
doPyrDown(img,0);
cvShowImage("Output",img);
cvWaitKey(0);
cvReleaseImage(&img);
cvDestroyWindow("Input");
cvDestroyWindow("Output");
}

此程序可以运行,但运行出来的结果并没有像预期那样宽度和高度为输入图像一半尺寸。有大神知道程序哪里除了问题吗,并给我指明应该如何修改,万分感谢!!!

你的程序写的有问题,你的dopyrdown函数采用函数返回值的方式输出采样后的图像。可是在你调用的时候是直接调用dopyrdown函数的,并没有ipimage指针去接收这个函数的返回值啊!也就是说缩小图像的操作做完了,但是程序中没有数据结构去接收这个结果。你在输出output图像的时候也是直接使用img图像的。
温馨提示:答案为网友推荐,仅供参考