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;
}


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章