我正在关注图像识别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值。

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

最佳答案

假定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它正在起作用。

07-28 03:32
查看更多