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 by y (в этом случае 640x480) на 16-битное с смещением размера (заголовок) .

Редактировать: добавлено изображение

код MATLAB для чтения и отображения изображения:

I = imread('foo.pgm'); 
imagesc(I);

и выглядит так:

enter image description here

15
задан Community 23 May 2017 в 10:30
поделиться