我们先简单复习一下:
用了显示函数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/kanqingzi13...]
# 导入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方向) - 所以,高应该放在第一维度,宽为第二维度
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。