2

Pythonで生の画像データをpngに変換しようとしています。私はPython、特に画像処理にかなり慣れていません...

Raw ファイルは 16 ビットのグレースケール画像です。

すでにフォーラムをスキャンしたので、次の解決策を思いつきました。

from PIL import Image, ImageFilter
import numpy as np
from scipy import ndimage, misc


rawfile = np.fromfile('test.raw', dtype=np.int16)

rawfile.shape = (1025,1025)
imgSize = (1025,1025)

img = Image.fromstring('L', imgSize, rawfile, 'raw', 'F;16')
img.save("rawData.png")

しかし、次のエラーが発生し続けます。

Traceback (most recent call last):
  File "****\Programs\Python 2.7.6\readraw\readraw.py", line 11, in <module>
    img = Image.fromstring('L', imgSize, rawfile, 'raw', 'F;16')
  File "****\Programs\Python 2.7.6\lib\site-packages\PIL\Image.py", line 1835, in fromstring
    return frombytes(*args, **kw)
  File "****\Programs\Python 2.7.6\lib\site-packages\PIL\Image.py", line 1822, in frombytes
    im.frombytes(data, decoder_name, args)
  File "****\Programs\Python 2.7.6\lib\site-packages\PIL\Image.py", line 608, in frombytes
    d = _getdecoder(self.mode, decoder_name, args)
  File "****\Programs\Python 2.7.6\lib\site-packages\PIL\Image.py", line 390, in _getdecoder
    return decoder(mode, *args + extra)
ValueError: unknown raw mode

raw モードが不明な理由を説明してもらえますか? ドキュメントを確認しましたが、トピックを理解している限り、PILLOW libにはこれが付属しているはずですか?!

よろしくお願いします


助けてくれてありがとう!

コードを変更したところ、動作するようになりました:

from PIL import Image, ImageFilter
import numpy as np
from scipy import ndimage, misc


rawfile = np.fromfile('test.raw', "uint16")

rawfile.shape = (1025,1025)
misc.imsave("test.png", rawfile)
4

3 に答える 3

0

を使用していraw2png.pyますか?

ソース:http://www.cl.cam.ac.uk/~cs448/git/trunk/src/bin/raw2png.py

または、実行コマンドラインを使用した ImageMagick: convert?

于 2014-02-21T20:38:27.353 に答える
0

PIL (および PILLOW) は、numpy 配列を直接処理しません。numpy には前後に変換する機能がありますが、私はこの種のものには PIL を使用しない傾向があります。

代わりに、配列をscipy.misc.imsave()で保存することをお勧めします。この関数は PNG に保存できます。

于 2014-02-21T20:32:22.760 に答える
0

PIL は numpy オブジェクトを理解していないと思います。PIL Image には、ディスクから raw ファイルを読み取る方法があると思います。次に、メモリ内の画像を変更して、好きな形式で保存/エクスポートできます。

于 2014-02-21T20:28:22.490 に答える