如何为Numpy数组的每个像素添加一个alpha值?

时间:2019-04-17 14:26:58

标签: python arrays numpy alpha

我正在关注图像识别https://www.youtube.com/watch?v=ry9AzwTMwJQ&list=PLQVvvaa0QuDffXBfcH9ZJuvctJV3OtB8A&index=9

的教程

但是构建的代码用于比较具有alpha值的图像和我要测试的图像没有alpha值。

我尝试了很多事情,这是我上次尝试的样子:

from PIL import Image
import numpy as np 

i = Image.open('images/test.png')
iar = np.array(i)

def addAlpha(iar):
    b = []
    for eachRow in iar:
        b += [[255]]
    for eachRow in iar:
        eachRow = np.append(eachRow, b, axis= 1)

        print(eachRow)

    print (iar)

    return iar

iar = addAlpha(iar)

所以当我打印eachRow时,看起来像我想要的样子,但是当我打印iar时,什么都没有改变,仍然只有RGB值。

我已经感谢您的帮助,对于我的英语不好,我深表歉意!

1 个答案:

答案 0 :(得分:0)

鉴于iar的形状为8x8x3,我们可以说我们正在处理一个8x8图像,其中每个像素具有三个通道(r,g和b)。我们想为alpha添加第四个通道,这将使我们的形状变为8x8x4。

首先,我们创建一个包含所有alpha值的数组:

alpha = 255 * np.ones((8, 8, 1))

在这里,我们创建一个8x8的数组(具有一个额外的尺寸,以使其轴与iar对齐),然后将其乘以255以为其提供所需的值。

现在,我们可以简单地concatenate两个数组:

iar = np.concatenate([iar, alpha], axis=2)

我们沿着轴2进行连接,这实际上是使我们将alpha数组“粘贴”到iar的后面,从而将第四条通道添加到图像的原因。

Here正在起作用。