質問するログイン新規登録

回答編集履歴

1

追記

2018/05/21 10:34

投稿

hayataka2049
hayataka2049

スコア30939

answer CHANGED
@@ -2,4 +2,26 @@
2
2
 
3
3
  ---
4
4
 
5
- 難航するようであれば、一枚画像のサンプルを頂けると回答する側もデバッグできます。もしTIFFがteratailにそのままアップロードできなければ、アップローダか何かに上げていただければ。
5
+ 難航するようであれば、一枚画像のサンプルを頂けると回答する側もデバッグできます。もしTIFFがteratailにそのままアップロードできなければ、アップローダか何かに上げていただければ。
6
+
7
+ ### 追記
8
+ 案の定`np.fromfile`は読めてませんでした(滅茶苦茶な次元数のnumpy配列になってた。逆によくエラーも吐かず読み込むものです)。
9
+
10
+ とりあえず、意図している(であろう)変換をするコードを書いてみたので、参考にしてください。
11
+
12
+ ```python
13
+ import numpy as np
14
+ import matplotlib.cm as cm
15
+ from matplotlib.colors import Normalize
16
+ from PIL import Image
17
+
18
+ pil_img = Image.open("img.tif") # PIL.Imageで読む。ファイル名は変えました
19
+ img_array = np.asarray(pil_img) # arrayに変換
20
+
21
+ norm = Normalize(vmin=0, vmax=6) # matplotlibのnormは使う。参照:https://matplotlib.org/users/colormapnorms.html
22
+ img_converted = cm.Paired(norm(img_array))*255 # matplotlibのcm.Pairedは使う。値のスケールが0~1なので0~255に変換
23
+ out_img = Image.fromarray(np.uint8(img_converted)) # ここでplt.imshow使うのもなんなのでそのままPIL.Imageで処理することにした
24
+ out_img.save("out_img.png") # 出力
25
+ ```
26
+
27
+ ![結果](518aef267ffe63fc95165dba57af8342.png)