【问题标题】:Why does Numpy's RGB array representation of an image have 4 layers not 3?为什么 Numpy 的图像 RGB 数组表示有 4 层而不是 3 层?
【发布时间】:2019-05-03 20:43:42
【问题描述】:

不应该有 3 层,一层用于红色强度,一层用于绿色强度,一层用于蓝色强度?那为什么我的 RGB 数组的形状是:(73, 115, 4)?

【问题讨论】:

  • Google for RGBA。
  • 图片是透明的PNG吗? 4 通道阵列是 R、G、B,具有用于透明度的“alpha”通道。
  • 查看 cv2.cvtColor() 的文档。或者您可以直接删除第四个通道,即透明度。你可以只索引你的图像来做到这一点,即img = img[:, :, :3]
  • 这就是我需要的亚历克斯。

标签: python numpy opencv colors vision


【解决方案1】:

还有一个默认的透明度列。
这称为alpha 值,默认为1。您当然可以通过多种方式之一进行更改。例如:

plt.imshow(my_im, alpha=0.3)

这对于将图像叠加在另一个之上很有用,仅作为示例。
祝你好运!


由于 cmets 中的另一个问题:如果您想要 RGB 值,只需取前三列;例如my_color[:, :, :3]

【讨论】:

  • 人们问我是否在使用 png。他们是对的,我在 png 文件上应用了 np.array() 。使用不同的图像文件是否会给我不同的格式,例如 RGB 而不是 GRB,或者可能没有透明度值?
  • 这不是np.array() 部分的问题。更多的是如何保存文件以及您使用什么模块来读取它。有些文件格式支持,有些不支持第 4 个 Alpha 通道。如果这没有帮助,我会谷歌它或就该主题打开一个不同的问题,因为它不再是严格意义上的 python 问题......
猜你喜欢
  • 2019-01-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-01-24
  • 2019-10-22
  • 2018-08-22
  • 1970-01-01
  • 2015-01-11
相关资源
最近更新 更多