Python OpenCV 图像缩放 cv2.resize 方法

举报
梦想橡皮擦 发表于 2021/09/15 09:04:36 2021/09/15
【摘要】 今天是持续写作的第 42 / 100 天。如果你有想要交流的想法、技术,欢迎在评论区留言。本篇博客只学习一个方法,cv2.resize 即图像缩放。 铺垫知识在检索图像缩放的相关知识点时,找到了一个相关算法,名字叫做插值算法,具体涉及 最近邻插值算法,双线性插值算法 等其它内容。细看了一下,在学习的第 9 天就去涉及,实在不够明智,故略过本部分理论知识,直接使用 OpenCV 里面 resi...

今天是持续写作的第 42 / 100 天。
如果你有想要交流的想法、技术,欢迎在评论区留言。

本篇博客只学习一个方法,cv2.resize 即图像缩放。

铺垫知识

在检索图像缩放的相关知识点时,找到了一个相关算法,名字叫做插值算法,具体涉及 最近邻插值算法双线性插值算法 等其它内容。

细看了一下,在学习的第 9 天就去涉及,实在不够明智,故略过本部分理论知识,直接使用 OpenCV 里面 resize 方法实现插值算法。

resize 方法格式与参数

resize 方法可以实现图像大小变换,包含缩放,默认的方法是刚才提及的 双线性插值算法

方法定义如下:

dst = cv2.resize(src,dsize,dst=None,fx=None,fy=None,interpolation=None)

参数说明:

  • src:输入图像
  • dsize:输出图像的大小。如果该参数为 0,表示缩放之后的大小需要通过公式计算,dsize = Size(round(fx*src.cols),round(fy*src.rows))。其中 fxfy 是图像 Width 方向和 Height 方向的缩放比例。
  • fx:Width 方向的缩放比例,如果是 0,按照 dsize * width/src.cols 计算
  • fy:Height 方向的缩放比例,如果是 0,按照 dsize * height/src.rows 计算
  • interpolation:插值算法类型,或者叫做插值方式,默认为双线性插值

方法返回结果 dst 表示输出图像。

程序的实现

以下案例先将 dsize 设置为 None,在将 fxfy 设置为 0.5

import cv2
import numpy as np

img = cv2.imread('9.jpg')

# 缩放比例:fx=0.5,fy=0.5
dst = cv2.resize(img,None,fx=0.5,fy=0.5,interpolation=cv2.INTER_LINEAR)
cv2.imshow('dst', dst)

cv2.waitKey(0)

上述方法比较简单,直接通过缩放比例即可实现,你还可以先获取图片的原始尺寸,然后在进行比例上的调整。

import cv2

img = cv2.imread('9.jpg')

# 获取原图像的水平方向尺寸和垂直方向尺寸
height, width = img.shape[:2]
# dsize=(0.5*width,0.5*height)
dst = cv2.resize(img, (int(0.6 * width), int(0.5 * height)), interpolation=cv2.INTER_LINEAR)

cv2.imshow('dst', dst)
cv2.waitKey(0)

上述代码与刚才的运行结果一致,此时,你已经掌握了 OpenCV 缩放图像最简单的形式了,并不需要现在就学会插值算法。

顺带一提,如果你不太想用现成的 resize 方法,想自己实现一下双线性插值算法,可以参考下述这篇文章。

https://altli.blog.csdn.net/article/details/109633710

最后一个参数 interpolation

interpolation 表示插值方式,有以下取值。

  1. INTER_NEAREST:最近邻插值
  2. INTER_LINEAR:线性插值(默认)
  3. INTER_AREA:区域插值
  4. INTER_CUBIC:三次样条插值
  5. INTER_LANCZOS4:Lanczos 插值

缩小时推荐使用 cv2.INTER_AREA
扩展放大时推荐使用 cv2.INTER_CUBIC 和 cv2.INTER_LINEAR,前者比后者运行速度慢。

以上值都可以自行设置,查看不同的效果。

OpenCV 尾声

1 个小时又过去了,对 Python OpenCV 相关的知识点,你掌握了吗?

空闲之余,可以订阅橡皮擦的爬虫百例课程学习爬虫知识。

【版权声明】本文为华为云社区用户原创内容,未经允许不得转载,如需转载请自行联系原作者进行授权。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。