numpyを使用してPythonで16ビットPGM画像を読み取るための効率的で明確な方法は何ですか?
PILのバグが原因で、PILを使用して16ビットPGMイメージをロードできません。次のコードでヘッダーを読み取ることができます。
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')
しかし、私はそれが最善の方法ではないと感じています。それを超えて、オフセットが.の16ビットでx x y(この場合は640x480)の次のデータを読み取る方法を理解する方法に問題がありsize(header)
ます。
編集:画像を追加
画像を読み取って表示するMATLABコードは次のとおりです。
I = imread('foo.pgm');
imagesc(I);
そしてこのように見えます: