1. ホーム
  2. python

[解決済み] Pythonでnumpyを使ってTIFFを扱う(インポート、エクスポート)。

2022-10-07 15:31:25

質問

私はピクセルデータを分析し、修正し、再びTIFFとして保存できるように、TIFF画像を開いてnumpy配列にインポートするpythonメソッドが必要です。(彼らは基本的にグレースケールの光度マップであり、ピクセルごとにそれぞれの値を表しています)。

私は、TIFF に関する PIL メソッドのドキュメントを見つけることができませんでした。それを理解しようとしましたが、"bad mode" または "file type not supported" というエラーだけが表示されました。

ここで何を使用する必要がありますか?

どのように解決するのですか?

まず、テスト用のTIFF画像を以下のサイトからダウンロードしました。 このページ という a_image.tif . そして、このようにPILで開きました。

>>> from PIL import Image
>>> im = Image.open('a_image.tif')
>>> im.show()

これで虹の画像が表示されました。numpyの配列に変換するには、次のように簡単です。

>>> import numpy
>>> imarray = numpy.array(im)

画像の大きさと配列の形が一致していることがわかります。

>>> imarray.shape
(44, 330)
>>> im.size
(330, 44)

そして、配列には uint8 の値が含まれています。

>>> imarray
array([[  0,   1,   2, ..., 244, 245, 246],
       [  0,   1,   2, ..., 244, 245, 246],
       [  0,   1,   2, ..., 244, 245, 246],
       ..., 
       [  0,   1,   2, ..., 244, 245, 246],
       [  0,   1,   2, ..., 244, 245, 246],
       [  0,   1,   2, ..., 244, 245, 246]], dtype=uint8)

配列の修正が終わったら、このようにPIL画像に戻すことができます。

>>> Image.fromarray(imarray)
<Image.Image image mode=L size=330x44 at 0x2786518>