【个人笔记】OpenCV4 C++ 快速入门 19课

个人资料,仅供学习使用
修改时间——2022年1月24日 20:17:13
学习课程:OpenCV4 C++ 快速入门视频30讲
视频老师:贾志刚

19 图像放缩与插值

opencv知识点:

  • 图像放缩 - resize
  • 插值算法 - Interpolation

本课所解决的问题:

  • 如何对图像放缩?
  • 什么是插值算法?

1.图像放缩

在opencv当中,如果我们想对一个图像放缩,我们要用到这样一个API

  • resize

介绍如下

resize
	重设图像宽长
		共6个参数
			第1个参数 输入
			第2个参数 输出
			
			第3个参数 输出图像的size
			第4个参数 fx 沿水平的比例因子
			第5个参数 fy 沿垂直的比例因子
				      
					可以使用size做放缩插值,也可以使用fx,fy卷积做放缩插值
			
			第6个参数 插值方法(查阅文档可知,下文会进行简单介绍)

resize的应用场景有很多,其中最常见的就是:

在做一些神经网络训练,深度网络训练,卷积网络训练等的时候,为了方便处理,会把图像resize到指定大小

2.插值算法

关于插值算法,这里简单介绍一下

首先,图像放缩的时候为什么要用插值算法呢?

这是因为,图像放缩时,像素点的位置会发生变化
要想得到放缩后图像像素点的位置,就要经过某种算法计算得来
这种计算的算法就是插值算法。

插值算法有很多相关的应用场景,比如:

  • 几何变换
  • 透视变换
  • 插值计算新像素
  • resize

而常见的插值算法有4种,其中前两种比较快,后两种比较慢

  • INTER_NEAREST = 0 ——最近邻插值
  • INTER_LINEAR = 1 ——线性插值
  • INTER_CUBIC = 2 ——立方插值
  • INTER_LANCZOS4 = 4 ——Lanczos插值

opencv4支持的插值算法如下

在这里插入图片描述

3.对一张图像进行放缩

接下来我们通过resize对一张图像进行缩小,放大

//函数定义
void resize_demo(Mat& image);

//函数实现
void QuickDemo::resize_demo(Mat& image) {

	Mat zoomin, zoomout;//缩小,放大

	int w = image.cols;
	int h = image.rows;

	imshow("原图", image);

	//resize(image, zoomin, Size(w / 2, h / 2), 0, 0, INTER_LINEAR);
	//imshow("缩小", zoomin);

	resize(image, zoomout, Size(w * 2, h * 2), 0, 0, INTER_LINEAR);
	imshow("放大", zoomout);

}

缩小
在这里插入图片描述
放大
在这里插入图片描述

4.插值算法 - 进阶

笔者目前层次,暂时用不到进阶的插值插值算法

关于插值的更深学习,具体的可以查课贾志刚老师的博客

本课所用API查阅

1.resize
在这里插入图片描述
在这里插入图片描述
2.InterpolationFlags
在这里插入图片描述
在这里插入图片描述
3.InterpolationMasks

在这里插入图片描述

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

啦啦啦大赛第大所

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值