概要:在平常的操作中,鄙人常常因为无法弄清相关参数与图片高度、宽度的对应关系,而感到十分苦恼。所以我心一横,将常见的参数与宽高的对应关系整理清楚,也在此分享给大家,
因而本文主要介绍在python中一些关于图片的函数或切片操作中的先后参数与图片的高度、宽度的对应关系。(以下用height表示高度,width表示宽度,“dontstarve.jpg”(饥荒真的很好玩!)作为实验原图片,如下所示,其原宽度为1280,高度为800)
print("祝大家每天快乐,love and peace!")
1、 cv2.resize函数
opencv是一个常用的python第三方库,我们常常使用它的resize函数对图片进行形态调整。
参数对应关系为:img1=cv2.resize(img0,(width,height))
实例操作:
>>> import cv2
>>> img1=cv2.imread("F://dontstarve.jpg")
>>> img1=cv2.resize(img1,(800,1280))
>>> cv2.imwrite("F://1.jpg",img1)
True
1.jpg
1.jpg的高度与宽度
2、size函数
size函数分为编辑器自带的size函数与numpy.size函数。前者返回图片高度、宽度、通道数的乘积,后者可以通过参数选择来返回图片高度、宽度、通道数。 (channel表示通道数)
参数对应关系为:width*height*channel=img.size
height=numpy.size(img,0)
width=numpy.size(img,1)
channel=numpy.size(img,2)
实例操作:
>>> import numpy as np
>>> img1.size
3072000
>>> np.size(img1,0)
800
>>> np.size(img1,1)
1280
>>> np.size(img1,2)
3
3、shape函数
shape函数与numpy.size函数的效果差不多,语法上稍有差别。
参数对应关系为:height=img.shape[0]
width=img.shape[1]
channel=img.shape[2]
实例操作:
>>> img1.shape[0]
800
>>> img1.shape[1]
1280
>>> img1.shape[2]
3
4、numpy.zeros与ones函数
numpy.zeros函数创造一个height行,width列的全零矩阵,而numpy.ones函数创造一个全一矩阵。
参数对应关系为:img=numpy.zeros((height,width))
img=numpy.ones((height,width))
实例操作:
>>> np.zeros((800,1280))
array([[0., 0., 0., ..., 0., 0., 0.],
[0., 0., 0., ..., 0., 0., 0.],
[0., 0., 0., ..., 0., 0., 0.],
...,
[0., 0., 0., ..., 0., 0., 0.],
[0., 0., 0., ..., 0., 0., 0.],
[0., 0., 0., ..., 0., 0., 0.]])
>>> img2=np.zeros((800,1280))
>>> img2.shape[0]
800
>>> img2.shape[1]
1280
>>> np.ones((800,1280))
array([[1., 1., 1., ..., 1., 1., 1.],
[1., 1., 1., ..., 1., 1., 1.],
[1., 1., 1., ..., 1., 1., 1.],
...,
[1., 1., 1., ..., 1., 1., 1.],
[1., 1., 1., ..., 1., 1., 1.],
[1., 1., 1., ..., 1., 1., 1.]])
>>> img2=np.ones((800,1280))
>>> img2.shape[0]
800
>>> img2.shape[1]
1280
5、img[ ]与img[ , ]
img[ ]中括号框中填入的是与高度有关的范围;img[ , ]逗号前填入的是与高度有关的范围,逗号后填入的是与宽度有关的范围。(注:1、图片范围从小到大在高度上的体现是从上到下,在宽度上是从左到右,对应于矩阵 2、因为切片要求以及图片像素数为整数,范围中的参数要为整数)
参数对应关系为:img1=img0[param1:param2](param1 & param2 are both relevant to height)
img1=img0[param1:param2,param3:param4](param1 & param2 are both relevant to height,param3 & param4 are both relevant to width)
实例操作:
>>> img3=img2[:height//2]
>>> img3.shape[0]
400
>>> img3=img2[:height//2,:width//2]
>>> img3.shape[0]
400
>>> img3.shape[1]
640
结语:好了以上就是所有的内容,希望大家多多关注,点赞,收藏,这对我有很大的帮助。国康家安,大家下次再见喽!!!