Вот краткая демонстрация, в которой показано, как преобразовать одномерный массив uint8
в двумерный массив uint16
. Здесь нам нужна ключевая функция view
.
import numpy as np
# Make 24 bytes of fake data
raw = np.arange(24, dtype=np.uint8)
#Convert
out = raw.view(np.uint16).reshape(3, 4)
print(out)
print(out.dtype)
выход
[[ 256 770 1284 1798]
[2312 2826 3340 3854]
[4368 4882 5396 5910]]
uint16
Спасибо Андрасу Дику за помощь!
Если получающееся изображение не выглядит правильным, вам, возможно, потребуется поменять местами порядок следования 16-битных целых чисел. Вы можете прочитать о порядке байтов в Numpy здесь .
И если , что по-прежнему выглядит некорректно, то данные могут быть организованы в виде двух плоскостей, одна из которых предназначена для младших битов пикселя, а другая - для старшего порядка. биты. С этим тоже легко справиться, но, надеюсь, до этого не дойдет. ;)