Как решейпить массив
Допустим, я прочитал из 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 шт):
Должно сработать, и именно через reshape (в Numpy все операции обычно называются понятным и логичным образом):
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)
