OpenCV學習心得(6) -- 圖像的縮放

原创 2012年03月21日 19:30:43

轉載請著名出處與作者

OpenCV提供了一個實現圖像縮放的函數:cv::resize

void resize(InputArray src, OutputArray dst, Size dsize, double fx=0, double fy=0, int interpolation=INTER_LINEAR )

dsize為縮放目的的寬度和高度信息.如果此參數為0(可以使用cv::Size()得到0 size),則根據fx和fy計算獲取.

fx與fy為寬度和高度的縮放比例.如果此參數為0則根據dsize計算獲取.

注意:resize的結果與dsize,fx,fy有關,與dst的預設值沒有關係,函數會重置dst的大小.

interpolation為縮放時填充的類型,默認情況下是雙線性填充.有下面的值可以選擇:

INTER_NEAREST 臨近元素插值法, 

INTER_LINEAR 雙線性差值法, 

INTER_CUBIC 立方差值法,

INTER_AREA 像素關係重採樣法,縮小圖像的時候此法可避免波紋出現,

INTER_LANCZOS4 lanczos4插入法


類中的函數如下:

//!伸縮圖片,ROI會被重置為整個新圖片,Resize函數針對整個圖片進行處理.
	//!rate為伸縮比率.interpolation為填充類型,可以為下面的值:
	//!INTER_NEAREST 臨近元素插值法, INTER_LINEAR 雙線性差值法, INTER_CUBIC 立方差值法,INTER_AREA 像素關係重採樣法,縮小圖像的時候此法可避免波紋出現,INTER_LANCZOS4 lanczos4插入法
	bool Resize(double rate,int interpolation);
	//!伸縮圖片,ROI會被重置為整個新圖片,s為新圖像的寬高.
	bool Resize(const cv::Size &s,int interpolation);
	//!伸縮圖片,ROI會被重置為整個新圖片,width為新圖像的寬,height為新圖像的高.
	bool Resize(int width,int height ,int interpolation);
	//!伸縮圖片,ROI會被重置為整個新圖片,width為新圖像的寬.此函數會鎖定長寬比,按比例根據寬度值縮放圖片.
	bool Resize(int width,int interpolation);
bool COpenCVImage::Resize(double rate,int interpolation)
{
	cv::resize(m_src,m_src,cv::Size(),rate,rate,interpolation);
	SetWholeAsROI();
	m_modifyed_for_draw=true;
	return true;
}
bool COpenCVImage::Resize(const cv::Size &s,int interpolation)
{
	cv::resize(m_src,m_src,cv::Size(s),0,0,interpolation);
	SetWholeAsROI();
	m_modifyed_for_draw=true;
	return true;
}
bool COpenCVImage::Resize(int width,int height ,int interpolation)
{
	return Resize(cv::Size(width,height),interpolation);
}
bool COpenCVImage::Resize(int width,int interpolation)
{
	return Resize(width,(int)(((double)m_src.rows)*((double)width/(double)m_src.cols)+0.5), interpolation);
}



相关文章推荐

OpenCV学习笔记-尺寸调整

尺寸调整应用到的函数为:Resize 图像大小变换 void cvResize( const CvArr* src, CvArr* dst, int interpolation=CV_INTER_LI...

python opencv 图像尺寸变换

利用python opencv中的  cv.Resize(源,目标,变换方法)就可以实现变换为想要的尺寸了 源文件:就不用说了 目标:你可以对图像进行倍数的放大和缩小  也可以直接的输入尺寸大小 变换...

OpenCV中cvResize函数图象放缩

图像大小变换void cvResize( const CvArr* src, CvArr* dst, int interpolation=CV_INTER_LINEAR );src:输入图像. dst...
  • Augusdi
  • Augusdi
  • 2013年06月03日 10:54
  • 33400

kinect 2.0 SDK学习笔记(六)--深度图的实时平滑之加权移动平均机制

上一节我们介绍了像素滤波器,下面介绍另一个实时平滑深度图的机制–加权移动平均机制。3.2 加权移动平均机制我们通过观察可以发现,即使kinect采集的是一个静止的场景,在得到的深度图上,同一个像素位置...

C# Kinect 2.0 SDK 学习笔记(1)——彩色影像数据流

彩色影像数据流是Kinect摄像头最基本的数据,图像相当于一般的摄像头(废话)。 本节主要是获取Kinect摄像头的彩色影像数据,在Image控件上将其展示出来。 新建WPF项目KinectC...

OpenCV學習心得(5) -- 圖像通道分離

轉載請注明出處與作者 OpenCV提供了一個函數可以進行通道的分離,就是 cv::split. void split(const Mat& mtx, vector& mv); void sp...

opencv学习心得(四)——opencv提取截获图像

首先确定选区区域,这里利用鼠标选取区域具体操作看opencv学习心得(一)。 下面就是从感兴趣区域选取图像。 第一:创建图像空间,大小与rect相同。 第二:利用setroi选取区域。 第三:...

OpenCV学习(六)之图像缩放变换

本实例是将原图像进行1/2缩放后显示出来: #include "highgui.h" #include "cv.h" using namespace cv; //zoom IplImage* d...
  • ZYTTAE
  • ZYTTAE
  • 2014年11月26日 14:55
  • 664

opencv学习imresize,pyrUp,pyrDown函数对图像进行缩放操作

我们在opencv中进行图片的尺寸缩放的方法一般为; 1,resize函数最为直接 2,pyrDown和pyrUp函数,即为图像金字塔相关的两个函数,对图像进行向上向下采样操作 图像金字...

opencv学习(二十七)之图像缩放函数resize

上一篇介绍了分别利用高斯金字塔和拉普拉斯金字塔结合opencv提供的pyrDown和pyrUp函数实现了图像的缩放,opencv还提供了另外一种图像缩放函数resize()实现对输入图像缩放到指定大小...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:OpenCV學習心得(6) -- 圖像的縮放
举报原因:
原因补充:

(最多只允许输入30个字)