Создание изображения в Python из списка значений пикселей. (Подушка) - PullRequest
0 голосов
/ 25 апреля 2020

Я работаю с библиотекой PIL. Мне нужно изменить интенсивность каждого цветового канала в изображении. (IE разрезал все значения B пополам). Для этого я перебрал каждый пиксель и сохранил их значения в списке.

list_1=[]
for u in range(contact_sheet.height):
    for i in range(contact_sheet.width):
        ppx=Image.Image.getpixel(contact_sheet,(i,u))
        list_1.append(ppx)

В результате я получил один список кортежей с более чем миллионным значением пикселя. Я планирую перебрать его (отредактировать: поскольку значения находятся в кортежах, я не смог их изменить) и изменить значения цвета с помощью al oop. Мой вопрос, как я могу преобразовать его в изображение? Также я думал об использовании массива numpy, но я не уверен в этом. Любая помощь будет отличной.

1 Ответ

0 голосов
/ 26 апреля 2020

Вы можете сделать:

list_1=[]
for u in range(contact_sheet.height):
    l = []
    for i in range(contact_sheet.width):
        ppx=Image.Image.getpixel(contact_sheet,(i,u))
        l.append(ppx)
    list_1.append(l)
resultImage = Image.fromarray(np.array(list_1,dtype="uint8"))
resultImage.show()

В документе effbot , это показывает, что Image.load() быстрее, чем getpixel(). Так что вы можете использовать:

pix = contact_sheet.load()
list_1=[]
for u in range(contact_sheet.height):
    l = []
    for i in range(contact_sheet.width):
        ppx=pix[i,u]
        l.append(ppx)
    list_1.append(l)
...