关闭

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

标签: dst
8779人阅读 评论(0) 收藏 举报
分类:

轉載請著名出處與作者

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



0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:74538次
    • 积分:642
    • 等级:
    • 排名:千里之外
    • 原创:9篇
    • 转载:0篇
    • 译文:0篇
    • 评论:1条
    文章分类
    文章存档
    最新评论