image.shape[]也是将图片转换成array.shape[]来输出的,所以理解了array.shape[]就可以理解image.shape[]了
array.shape表示array的组成情况
shape[0],shape[1],shape[2],shape[3]…表示array不同层次的元素数量
从shape[0]-shape[1]表示的是array从外到内的组成元素个数
举例如下
定义如下数组 dem1
dem1 = np.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., 0., 0., 0., 0.],
[ 0., 0., 0., 0., 0., 0., 0., 0.]]])
print(dem1.shape[0])
print(dem1.shape[1])
print(dem1.shape[2])
输出结果为
2
3
8
定义如下数组dem2
dem2 = np.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.]])
print(dem2.shape[0])
print(dem2.shape[1])
输出结果为
3
8
若在dem2的程序中加入 print(dem2.shape[2])
则会显示 IndexError: tuple index out of range
同理,运用到image.shape[]时,image.shape[0],image.shape[1]表示图像长,宽,image.shape[0],image.shape[1],image.shape[2]表示图像长,宽,通道数
*需要注意,数组层数不同,方括号的数量也不同,否则会显示
TypeError: data type not understood
此问题可参考博客 https://blog.csdn.net/quintind/article/details/77370276