将 png 图像传递给 numpy 数组,最后一维的第 4 列是什么?

dan*_*iel 2 python arrays png numpy

我将 png 图像导出到 python numpy 数组。

import numpy
import Image
import matplotlib.pyplot as plt
 Im=Image.opne('file.png')
 arr=numpy.array(Im).reshape(Im.size[1],Im.size[0],4)
plt.imshow(arr)
plt.show()
Run Code Online (Sandbox Code Playgroud)

现在,在书中,我发现使用 3 个通道重塑 png,这对我不起作用。我不得不使用 4。

>>> Im.shape
(401, 601, 4)
Run Code Online (Sandbox Code Playgroud)

我可以想象红色通道:

ImR=Im[:,:,0]
Run Code Online (Sandbox Code Playgroud)

绿色和蓝色类似。最后一个给我一个白屏。

我设法删除它:

Im4=Im[:,:,:-1]
Run Code Online (Sandbox Code Playgroud)

现在:

>>> Im4.shape
(401, 601, 3)
Run Code Online (Sandbox Code Playgroud)

我可以像在删除第 4 列之前一样将图像可视化

我的问题是:PNG 中的第 4 列是什么?

Gle*_*son 6

如果 PNG 具有 alpha 通道,则第四列将是 alpha。由于可视化该通道为您提供全白,因此所有 alpha 都是 maxval(如果您的样本是 8 位,则为 255),这意味着所有像素都是不透明的。