Python OpenCV 图像缩放 cv2.resize 方法
本篇博客只学习一个方法,cv2.resize 即图像缩放。
铺垫知识
在检索图像缩放的相关知识点时,找到了一个相关算法,名字叫做插值算法,具体涉及 最近邻插值算法
,双线性插值算法
等其它内容。
细看了一下,在学习的第 9 天就去涉及,实在不够明智,故略过本部分理论知识,直接使用 OpenCV 里面 resize 方法实现插值算法。
resize 方法格式与参数
resize 方法可以实现图像大小变换,包含缩放,默认的方法是刚才提及的 双线性插值算法
。
方法定义如下:
参数说明:
src:输入图像
dsize:输出图像的大小。如果该参数为 0,表示缩放之后的大小需要通过公式计算,
dsize = Size(round(fx*src.cols),round(fy*src.rows))
。其中fx
与fy
是图像 Width 方向和 Height 方向的缩放比例。fx:Width 方向的缩放比例,如果是 0,按照
dsize * width/src.cols
计算fy:Height 方向的缩放比例,如果是 0,按照
dsize * height/src.rows
计算interpolation:插值算法类型,或者叫做插值方式,默认为双线性插值
方法返回结果 dst 表示输出图像。
程序的实现
以下案例先将 dsize 设置为 None,在将 fx
与 fy
设置为 0.5
。
上述方法比较简单,直接通过缩放比例即可实现,你还可以先获取图片的原始尺寸,然后在进行比例上的调整。
上述代码与刚才的运行结果一致,此时,你已经掌握了 OpenCV 缩放图像最简单的形式了,并不需要现在就学会插值算法。
顺带一提,如果你不太想用现成的 resize 方法,想自己实现一下双线性插值算法,可以参考下述这篇文章。
https://altli.blog.csdn.net/article/details/109633710
最后一个参数 interpolation
interpolation 表示插值方式,有以下取值。
INTER_NEAREST:最近邻插值
INTER_LINEAR:线性插值(默认)
INTER_AREA:区域插值
INTER_CUBIC:三次样条插值
INTER_LANCZOS4:Lanczos 插值
缩小时推荐使用 cv2.INTER_AREA
扩展放大时推荐使用 cv2.INTERCUBIC 和 cv2.INTERLINEAR,前者比后者运行速度慢。
以上值都可以自行设置,查看不同的效果。
OpenCV 尾声
1 个小时又过去了,对 Python OpenCV 相关的知识点,你掌握了吗?
空闲之余,可以订阅橡皮擦的爬虫百例课程学习爬虫知识。
**想学 Python 爬虫,可以订阅橡皮擦专栏哦~
** 🈲🈲🈲🈲 点击发现惊喜 🈲🈲🈲🈲
版权声明: 本文为 InfoQ 作者【梦想橡皮擦】的原创文章。
原文链接:【http://xie.infoq.cn/article/6a4cc066c372172a47105efd9】。文章转载请联系作者。
评论