纯Python小白 openCV基本操作(二):resize

我们先简单复习一下:
用了显示函数cv2.imshow,为了世界和平[joke],我们后面必须加上cv2.waitKey(0);cv2.destroyAllWindows()这两句话


也就是说,这三句代码是一套的:

cv2.imshow("homework", peppers_img)

cv2.waitKey(0)
cv2.destroyAllWindows()

图片resize,就是重新调整他的大小的意思,先猜一下,openCV里resize 的函数函数名字叫什么?

没错,就是cv2.resize,他有两个主要的参数src, dsize(下面讲)

另一个重要参数是interpolation,但我们今天不讲,这里简单提一下,interpolation是你要选择的插值方式,你可能要问,什么是插值,我举个简单的例子,如果你要将一张图片变大,像素变多,但是原图片的像素点就那么多,剩下来的像素点从何而来呢?这就用到了我们的插值方法,所谓插值,就是在值之间插入其他值的意思。

当然还有其他参数,我们之后会慢慢讲到,不着急

cv2.resize(src, dsize)
# src 就是你的原图片
# dsize 是你要调整的大小

# 该函数会返回被 resize 的图片

来个实例(↓实验图片↓):

在这里插入图片描述

清柠摘自清子博客:[https://weibo.com/kanqingzi1368?is_hot=1#_rnd1582971724014]

# 导入openCV库
import cv2 
# 读取图片
src = cv2.imread('./kqz.jpg')
# 我们看一看图片的大小
print(src.shape)   # <---(1)
# 将图片 resize 
img_resize = cv2.resize(src, (280, 400)) # <---(2)
# 将 resize 的图片展示出来
cv2.imshow("img_resize", img_resize)
# 等待按键则执行下一句话
cv2.waitKey(0)
# 关闭openCV打开的所有窗口
cv2.destroyAllWindows()
# 显示resize 图片的shape
print(img_resize.shape) # <---(3)

(1). 你可能不理解src.shape什么意思,之后会细说,这里也是简单提一下,src是我们的图片,也可以说是图片对象,对,就是面向对象编程的对象,这个对象他有个属性(可以理解为特点),这个属性就是我们这里提到的shape,shape嘛,就是形状,也就是说,src.shape就是图片形状的意思,说白了就是图片有几维,每一维有多少像素点
(实际上,图片是 numpy 中的 ndarray类的实例对象)

(2). cv2.resize函数第一个参数是你的图片,第二个参数是图片的形状,即宽高,宽有多少个像素点,高有多少个像素点,在这里,我们将参数传为(280, 400),意思是,新图片的宽为280像素,高为400像素

在这里插入图片描述

(3). 运行代码,你会发现,打印为(400, 280, 3),那么问题来了,我们刚刚在cv2.resize中传入的形状明明是(280, 400),怎么变成了这个?

  • 我们先说那个3,一般彩色图片都是RGB色域(关于色域以后会说)的,所有有3个通道,代表RGB三个通道的的灰度值
  • (280, 400)是宽为280像素,高为400像素,但是在上文的图片对象中,由于图片存储是以灰度图矩阵形式,而矩阵的话,讲究先行后列,也就是它的第一维是**"高"方向**,第二维是**"宽"方向**,(第三维是RGB方向)
  • 所以,高应该放在第一维度,宽为第二维度

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-m5FzcvUS-1583555031442)(/img/bVbEdSR)]

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值