Как решейпить массив

Допустим, я прочитал из csv файла строку, репрезентирующую изображение 41x41 (RGBA)

Например, image_csv = "255,255,255,0,..."

Я помещаю в image_array эту строку заsplitченную через запятую.

image_array = image_csv.split(',')

В итоге получается массив [255, 255, 255, 0,...]. В этом списке элементов 6724 = 41 * 41 * 4 (потому что 4 канала на каждый пиксель)

Теперь я хочу просмотреть это изображение используя matplotlib. Естественно, такой код не даст мне нужного результата

matplotlib.pyplot.imshow(image_array)
matplotlib.pyplot.show()

В связи с этим у меня вопрос. Как мне отобразить это изображение? Нужно ли через numpy зарешейпить image_array в трёхмерную матрицу (41, 41, 4)? Если да, то как я могу это сделать?

Спасибо


Ответы (1 шт):

Автор решения: CrazyElf

Должно сработать, и именно через reshapeNumpy все операции обычно называются понятным и логичным образом):

image_array = np.array(map(int, image_csv.split(','))).reshape((41,41,4))

Проверил в Google Colab на искусственных данных - вроде рисует что-то, как и задумано:

import numpy as np
import cv2
from google.colab.patches import cv2_imshow

n = 41
img = np.array([0, 255, 0, 200] * n * n).reshape((n, n, 4))
cv2_imshow(img)

введите сюда описание изображения

→ Ссылка