【问题标题】:unable to understand this image read python code [duplicate]无法理解此图像读取python代码[重复]
【发布时间】:2018-06-16 17:17:37
【问题描述】:
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] 是什么意思?

【问题讨论】:

  • 它分别获取图像的redgreenblue通道。
  • 规范的“理解切片表示法”帖子有几个答案将其扩展到 numpy 数组,所以我在那里欺骗了它。

标签: python python-3.x


【解决方案1】:

彩色 rgb 图像被读取为 3 维数组。前两个维度是 x 和 y,第三个维度是颜色,按红、绿、蓝的顺序排列。

括号表示法用于以[x, y, c] 的形式引用此三维数组的子集。冒号表示应选择该维度中的所有值。

因此image[:,:,0]是红色通道,image[:,:,1]是蓝色通道,image[:,:,2]是绿色通道。

【讨论】:

    【解决方案2】:

    大多数图像表示都使用具有 RGB 颜色空间位图。图像被视为 像素矩形,我们为每个像素分配特定颜色。然后将颜色表示为 3 元组:其中元组的第一项表示 redintensity,第二项表示 green 的强度>,最后一个是蓝色的强度。重要的一点是,这是图像的 a 表示:还有其他的。例如使用矢量图形。此外,还有其他色彩空间。

    因此,这意味着如果我们将图像加载到内存中,我们将获得一个形状为(h, w, 3) 的矩阵,其中h 是图像的高度(以像素为单位),w 是图片的宽度(同样以像素为单位)。

    现在 numpy 允许高级索引:我们可以使用 image[:,:,0] 构造视图。这意味着我们构造了一个(h, w) 形矩阵,其中对于索引[i, j] 处的项目,我们获得原始图像中位于[i, j, 0] 处的值。因此,我们获得了一张图像,它只考虑了 red 通道的强度。

    image[:,:,1]image[:,:,2] 也是如此,我们分别考虑了 greenblue 通道。该表示使用浮点数,其中1.0 表示最大强度,0.0 表示最低强度。例如(red, green, blue) = (1.0, 0.5, 0.0),这是大多数人看到的颜色黄色

    【讨论】:

    • Willem Van Onsem,感谢您的精彩解释
    猜你喜欢
    • 1970-01-01
    • 2017-11-13
    • 1970-01-01
    • 2015-09-06
    • 2020-10-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多