
【opencv】关于用cvPyrDown()创建一幅宽度和高度为输入图像一半尺寸的图像的问题
#include"highgui.h"#include"cv.h"IplImage*doPyrDown(IplImage*in,intfilter=IPL_GAUSSIA...
#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");
}
此程序可以运行,但运行出来的结果并没有像预期那样宽度和高度为输入图像一半尺寸。有大神知道程序哪里除了问题吗,并给我指明应该如何修改,万分感谢!!! 展开
#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图像的。

2024-08-07 广告
OpenCV标定板是东莞市大凡光学科技有限公司在相机标定中常用的工具。它通常由黑白格点按一定规则排列在平面上组成,如棋盘格或圆形格等。在相机标定时,将标定板置于不同位置和姿态下拍摄图像,利用OpenCV库中的函数检测标定板上的角点或圆心,进...
点击进入详情页
本回答由东莞大凡提供
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询