首页 > 解决方案 > 如何为 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 值。

我已经感谢你的帮助,我为我糟糕的英语道歉!

标签: pythonarraysnumpyalpha

解决方案


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

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

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

在这里,我们创建一个 8x8 数组(具有一个额外的维度以使其轴iar与 对齐)并将其乘以255得到我们想要的值。

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

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

我们沿着轴 2 连接,这实际上让我们可以将alpha数组“粘贴”到 的后面iar,将我们的第四个通道添加到图像中。

是在行动。


推荐阅读