Потратив день на восстановление этого изображения, я нашел решение.
Я считаю, что сглаженная версия пикселей моего нормализованного изображения была сохранена в одномерном массиве с именем im_data
, который выглядит следующим образом: это
[r1 g1 b1 r2 g2 b2 ... rN gN bN]
, где индекс N
- это количество пикселей.
Итак, первым шагом я умножаю каждый пиксель на 255.0
, чтобы получить значения пикселей между 0-255
:
import numpy as np
im_data = (im_data*255.0).astype(np.uint8)
и вместо того, чтобы изменять форму массива, используя форму (im_h, im_w, 3)
Я изменяю его, используя форму (3, im_h, im_w)
так:
im_data = im.reshape((3, im_h, im_w))
Наконец, я транспонирую массив результата numpy, чтобы получить правильную форму изображения, которая равна (im_h, im_w, 3)
, поэтому:
im_data = np.transpose(im, (1, 2, 0))
Наконец,
img = Image.fromarray(im_data, 'RGB')
img.show()
и boom: (изображение является одним из набора данных MOTChallenge https://motchallenge.net/)
Если честно, я не совсем уверен, как все это работает. Я просто возиться с операциями с массивами.