Как преобразовать пиксели, хранящиеся в списке, в изображение с python? - PullRequest
2 голосов
/ 17 февраля 2020
pix = [
    [[90, 94, 6], [126, 108, 24], [180, 116, 42], [166, 116, 46], [72, 94, 31]],
    [[101, 96, 14], [190, 165, 84], [202, 134, 63], [170, 115, 50], [40, 50, 0]],
    [[145, 125, 53], [150, 112, 40], [148, 73, 6], [156, 90, 31], [25, 11, 1]],
    [[133, 124, 57], [165, 142, 75], [195, 142, 77], [169, 120, 62], [82, 74, 28]],
    [[73, 105, 40], [56, 77, 10], [138, 135, 67], [97, 95, 34], [45, 69, 21]],
]

В списке хранится несколько пикселей, и теперь я хочу преобразовать их в изображение. Как я могу превратить этот список в изображение? Спасибо

Ответы [ 3 ]

4 голосов
/ 17 февраля 2020

Используя PIL , вы можете создать изображение, используя массив:

from PIL import Image
import numpy as np
img = Image.fromarray(np.array(pix).astype(np.uint8))

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

img.show()

enter image description here

Хорошо, что теперь вы можете пользоваться всеми инструментами PIL для обработки изображений (изменение размера, миниатюры, фильтры, ...).

1 голос
/ 18 февраля 2020

Вот как это сделать, используя OpenCV . По умолчанию OpenCV использует массивы Numpy для отображения изображений, поэтому вы можете просто преобразовать список в <class 'numpy.ndarray'>.

Результат:

image

import numpy as np
import cv2

pix = [
    [[90, 94, 6], [126, 108, 24], [180, 116, 42], [166, 116, 46], [72, 94, 31]],
    [[101, 96, 14], [190, 165, 84], [202, 134, 63], [170, 115, 50], [40, 50, 0]],
    [[145, 125, 53], [150, 112, 40], [148, 73, 6], [156, 90, 31], [25, 11, 1]],
    [[133, 124, 57], [165, 142, 75], [195, 142, 77], [169, 120, 62], [82, 74, 28]],
    [[73, 105, 40], [56, 77, 10], [138, 135, 67], [97, 95, 34], [45, 69, 21]],
]

# Convert to ndarray
img = np.array(pix).astype(np.uint8)

# Save image
cv2.imwrite('img.png', img)

# Display image
cv2.imshow('img', img)
cv2.waitKey()
0 голосов
/ 17 февраля 2020

Ответ выше превращает ваш список в PIL Image. Если вы просто хотите увидеть изображение, вы можете сделать это:

import matplotlib.pyplot as plt

plt.imshow(pix)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...