python图像三维数组通透理解
先说结果: 一张图片的颜色是由RGB三个通道构成, 可以把一张图片上的每一个像素点看成一个对象, 这个对象又由RGB三种颜色叠加, 即用一个一维数组表示,假如我们有一张 m * n 个像素点的图片, 那么每一行有 n 个像素, 即每一行有 n 个一维数组, 即这一行是一个二维数组, 那一张图片又有 m 行, 那么我们就得到了 m 个二维数组, 这m 个二维数组构成了一个三维数组
以下图为例:
红色代表 R 通道亮度值, 绿色代表 G 通道亮度值, 蓝色代表 B 通道亮度值
import numpy as np
threeDim = np.array([[[0, 1, 2], [0, 1, 2], [0, 1, 2], [0, 1, 2]],
[[0, 1, 2], [0, 1, 2], [0, 1, 2], [0, 1, 2]]
])
# 索引图片上的某一点的RGB像素组合, 三维数组的shape[0]代表图片上的第几行,shape[1]代表图片上的第几列, shape[2] 代表有几个通道
print(threeDim[0][0]) # [0 1 2]
# 索引图片上某一点的 B 通道颜色
print(threeDim[0][0][2]) # 2
# 索引所有像素点
print(threeDim[:, :])
'''
打印结果:
[[[0 1 2]
[0 1 2]
[0 1 2]
[0 1 2]]
[[0 1 2]
[0 1 2]
[0 1 2]
[0 1 2]]]
'''
# 翻转所有通道颜色
print(threeDim[:, :, ::-1])
'''
打印结果:
[[[2 1 0]
[2 1 0]
[2 1 0]
[2 1 0]]
[[2 1 0]
[2 1 0]
[2 1 0]
[2 1 0]]]
'''