opencv_resize( )调整图像大小

将源图像精确地转换为指定尺寸的目标图像。如果源图像中设置了ROI(Region Of Interest ,感兴趣区域),那么resize( )函数会对源图像的ROI区域进行调整图像尺寸的操作,来输出到目标图像中。

缩小图像:1、对图像G_i进行高斯内核卷积 2、将所有偶数行和列去除

放大图像:1、将图像在每个方向扩大为原来的两倍,新增的行和列以0填充

2、使用先前同样的内核(乘以4)与放大后的图像卷积,获得 “新增像素”的近似值

【原型】

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

参数1:InputArray类型的src,输入图像,填Mat类的对象即可。
参数2:OutputArray类型的dst,输出图像,当其非零时,有着dsize的尺寸,或者由src.size()计算出来。
参数3:Size类型的dsize,输出图像的大小;如果它等于零,由下式进行计算: 其中,dsize,fx,fy都不能为0。

参数4:double类型的fx,沿水平轴的缩放系数,有默认值0,且当其等于0时,由下式进行计算:

 参数5:double类型的fy,沿垂直轴的缩放系数,有默认值0,且当其等于0时,由下式进行计算:

 

 参数6:int类型的interpolation,用于指定插值方式,默认为INTER_LINEAR(线性插值)。
 可选的插值方式如下:

  • INTER_NEAREST - 最近邻插值
  • INTER_LINEAR - 线性插值(默认值)
  • INTER_AREA - 区域插值(利用像素区域关系的重采样插值)
  • INTER_CUBIC –三次样条插值(超过4×4像素邻域内的双三次插值)
  • INTER_LANCZOS4 -Lanczos插值(超过8×8像素邻域的Lanczos插值)

若要缩小图像,一般情况下用CV_INTER_AREA来插值

而若要放大图像,一般情况下CV_INTER_LINEAR

【实例】

#include <opencv2/opencv.hpp>
#include <opencv2/imgproc/imgproc.hpp>

using namespace cv;

int main()
{
	//载入原始图   
	Mat srcImage = imread("D:\\study\\picture\\a.jpg"); 
	Mat tmpImage, dstImage1, dstImage2;//临时变量和目标图的定义
	tmpImage = srcImage;//将原始图赋给临时变量

	//显示原始图  
	imshow("【原始图】", srcImage);

	//进行尺寸调整操作
	resize(tmpImage, dstImage1, Size(tmpImage.cols / 2, tmpImage.rows / 2), (0, 0), (0, 0), 3);
	resize(tmpImage, dstImage2, Size(tmpImage.cols * 2, tmpImage.rows * 2), (0, 0), (0, 0), 3);
	//显示效果图  
	imshow("【效果图】之一", dstImage1);
	imshow("【效果图】之二", dstImage2);

	waitKey(0);
	return 0;
}

 

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值