import matplotlib.pyplot as plt
import matplotlib.image as mpimg
import numpy as np
my_image = mpimg.imread('mountain.png')
print('The image is:- ',type(image),
'dimensions is:-', image.shape)
print(image[:,:,0])
print(image[:,:,1])
print(image[:,:,2])
我无法理解image[:,:,0]
或image[:,:,1]
是什么意思?
答案 0 :(得分:1)
将颜色rgb图像读取为三维阵列。前两个维度是x和y,第三个维度是红色,绿色,蓝色的颜色。
括号表示法用于以[x, y, c]
的形式引用此三维数组的子集。冒号表示应该选择该维度中的所有值。
因此image[:,:,0]
指的是红色通道,image[:,:,1]
指的是蓝色通道,image[:,:,2]
指的是绿色通道。
答案 1 :(得分:1)
大多数图像表示使用带有 RGB色彩空间的位图 。图像被视为像素的矩形,我们为每个像素指定一种特定的颜色。然后将颜色表示为3元组:其中元组的第一项表示红色的强度,第二项表示绿色的强度>,最后一个是 blue 的强度。一个重要的注意事项是,这是图像的 a 表示:还有其他的表示。例如使用矢量图形。此外还有其他颜色空间。
这意味着如果我们将图像加载到内存中,我们会得到一个形状为(h, w, 3)
且h
图像的高度的矩阵(以像素为单位),以及w
图片的宽度(再次以像素为单位)。
现在numpy允许高级索引:我们可以使用image[:,:,0]
构建视图。这意味着我们构造了一个(h, w)
形状的矩阵,对于索引为[i, j]
的项目,我们获得了原始图像中[i, j, 0]
处的值。因此,我们获得了一个只考虑 red 频道强度的图像。
同样适用于image[:,:,1]
和image[:,:,2]
,其中我们将绿色和 blue 频道考虑在内。该表示使用浮点数,1.0
表示最大强度,0.0
表示最低强度。例如,如果(red, green, blue) = (1.0, 0.5, 0.0)
,这是大多数人看到的颜色黄色。