Numpy и 16-битный PGM
Что такое эффективный и понятный способ чтения 16-битных изображений PGM в Python с помощью numpy?
Я не могу использовать PIL для загрузки 16-битных изображений PGMиз-за ошибки PIL, Я могу прочитать в шапке со следующим кодом:
dt = np.dtype([('type', 'a2'),
('space_0', 'a1', ),
('x', 'a3', ),
('space_1', 'a1', ),
('y', 'a3', ),
('space_2', 'a1', ),
('maxval', 'a5')])
header = np.fromfile( 'img.pgm', dtype=dt )
print header
Это печатает правильные данные:('P5', ' ', '640', ' ', '480', ' ', '65535')
Но у меня такое ощущение, что это не совсем лучший способ. И кроме того, у меня возникли проблемы, как выяснить, как читать в следующих данных x на y (в данном случае 640x480) на 16-битной со смещениемsize(header)
.
РЕДАКТИРОВАТЬ: ИЗОБРАЖЕНИЕ ДОБАВЛЕНО
MATLAB код для чтения и отображения изображения:
I = imread('foo.pgm');
imagesc(I);
И выглядит так: