Преобразование 1D Numpy Array в 1D изображение с помощью PIL - PullRequest
3 голосов
/ 25 октября 2019

PIL возвращает IndexError: tuple index out of range при преобразовании массива 1D Numpy в объект изображения PIL.

Я пытаюсь преобразовать массив 1D Numpy длиной 2048 со значением от 0 до 255 в изображение, используя PIL. Я думаю, что это проблема с моим массивом, являющимся 1D. Я также попытался преобразовать случайное целое число 1D-массива в изображение, и я получил ту же ошибку.

Пример случайного целого числа:

from PIL import Image
import numpy as np

arr = np.random.randint(255, size=(2048))
arr = arr.astype('uint8')
img = Image.fromarray(arr, 'L')
img.show()

Я ожидаю, что код покажет изображениеодна линия пикселей с различными оттенками серого.

Ответы [ 2 ]

1 голос
/ 25 октября 2019

Когда я пытался запустить ваш код, проблема была просто в том, что ваш массив был одномерным. Так что попробуйте:

arr2d = arr.reshape(-1,1)
Image.fromarray(arr2d,'L').show()
1 голос
/ 25 октября 2019

Входной массив должен быть 2D, даже если одно измерение равно 1. Вам просто нужно решить, хотите ли вы, чтобы изображение представляло собой горизонтальный или вертикальный ряд пикселей, и добавить измерение при создании массива.

arr = np.random.randint(255, size=(2048, 1))  # vertical image

arr = np.random.randint(255, size=(2048, 1))  # horizontal image
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...