OpenCV常用函数——图像采样

本文主要介绍: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;
}


你可能感兴趣的:(Opencv)