Как добавить альфа-значение к каждому пикселю массива Numpy? - PullRequest
1 голос
/ 17 апреля 2019

Я следую учебному пособию по распознаванию изображений https://www.youtube.com/watch?v=ry9AzwTMwJQ&list=PLQVvvaa0QuDffXBfcH9ZJuvctJV3OtB8A&index=9

Но созданный код создан для сравнения изображений, имеющих альфа-значение, и изображения, которое я хочу протестировать, не имеют альфа-значения.

Я много чего пробовал, вот как выглядит моя последняя попытка:

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, это выглядит так, как я хочу, но когда я печатаю, ничего не изменилось, остаются только значения RGB.

Я уже благодарю вас за любую помощь и извиняюсь за плохой английский!

1 Ответ

0 голосов
/ 17 апреля 2019

Учитывая, что форма iar имеет размер 8x8x3, мы можем сказать, что работаем с изображением 8x8, где каждый пиксель имеет три канала (r, g и b). Мы хотели бы добавить четвертый канал для альфы, который увеличит нашу форму до 8x8x4.

Сначала мы создадим массив, содержащий все наши альфа-значения:

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

Здесь мы создаем массив единиц 8x8 (с дополнительным измерением, чтобы его оси совпадали с iar), и умножаем его на 255, чтобы получить желаемое значение.

Теперь мы можем просто объединить два массива:

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

Мы объединяем вдоль оси 2, что, по сути, позволяет нам «вставить» массив alpha в конец iar, добавив наш четвертый канал к изображению.

Здесь он в действии.

...