Bootstrap

python中参数与图片高度、宽度的对应关系

概要:在平常的操作中,鄙人常常因为无法弄清相关参数与图片高度、宽度的对应关系,而感到十分苦恼。所以我心一横,将常见的参数与宽高的对应关系整理清楚,也在此分享给大家,

因而本文主要介绍在python中一些关于图片的函数或切片操作中的先后参数与图片的高度、宽度的对应关系。(以下用height表示高度,width表示宽度,“dontstarve.jpg”(饥荒真的很好玩!)作为实验原图片,如下所示,其原宽度为1280,高度为800)

16b11cb7650e40af966077d2bcf02762.jpeg

 a46f5e551760443aaaec0112c15516bb.png

 

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

5436b1c842df453eafb412ddb8a3ff47.jpeg

 1.jpg

dd61c485dead468fbcf3bae752107abc.png

 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

结语:好了以上就是所有的内容,希望大家多多关注,点赞,收藏,这对我有很大的帮助。国康家安,大家下次再见喽!!!

e6b245130b804f48a249921a35b7bf38.jpeg

 

;