您的位置:首页 > 运维架构

OpenCV常用函数——图像采样

2016-03-04 20:16 1016 查看
本文主要介绍:Opencv实现图像采用。

1.Mat数据类型:

/***********************************************************************
函数名称:MatImgSample
函数功能:对IplImage类型的图像进行采样
函数参数:
src		:原图像
dRatioX	:列采样比率,0.5为2采样
dRatioY	:行采样比率,0.5为2采样
nType   :采样类型, 1  resize, 2 pyrDown, 3 pyrUp
返回值:采样后的图像
创建人	:
创建时间:2016.3.1
备注:
***********************************************************************/
bool MatImgSample(Mat &src, Mat &dst, double dRatioX, double dRatioY, int nType)
{
if(nType == 1) //直接降采样或上采样  上、下采样由dRatioX、dRatioY决定
resize(src, dst, Size(), dRatioX, dRatioY);
else if(nType == 2) //高斯降采样,即先高斯平滑,后采样
pyrDown(src, dst, Size(src.cols*dRatioX, src.rows*dRatioX));
else if(nType == 3)
pyrUp(src, dst, Size(src.cols*dRatioX, src.rows*dRatioX));
else
{
printf("没有该采样类型。\n");
return false;
}

return true;
}


2.IplImage* 数据类型
/***********************************************************************
函数名称:IplImageSample
函数功能:对IplImage类型的图像进行采样
函数参数:
src		:原图像
dRatioX	:列采样比率,0.5为2采样
dRatioY	:行采样比率,0.5为2采样
nType   :采样类型, 1  cvResize, 2 cvPyrDown, 3 cvPyrUp
返回值:采样后的图像
创建人	:
创建时间:2016.3.1
备注:
***********************************************************************/
IplImage* IplImageSample(IplImage *src, double dRatioX, double dRatioY, int nType)
{

CvSize dstSize ;
dstSize.width = src->width*dRatioX;
dstSize.height = src->height*dRatioY;
IplImage* dst = cvCreateImage(dstSize,src->depth,src->nChannels);

if(nType == 1) //直接降采样或上采样  上、下采样由dRatioX、dRatioY决定
cvResize(src,dst,CV_INTER_CUBIC);
else if(nType == 2) //高斯降采样,即先高斯平滑,后采样
cvPyrDown( src, dst, CV_GAUSSIAN_5x5 );
else if(nType == 3)
cvPyrUp( src, dst, CV_GAUSSIAN_5x5 );
else
{
printf("没有该采样类型。\n");
return NULL;
}

return dst;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: