ユーザ用ツール

サイト用ツール


画像をnumpy配列に変換

差分

このページの2つのバージョン間の差分を表示します。

この比較画面にリンクする

両方とも前のリビジョン 前のリビジョン
次のリビジョン
前のリビジョン
画像をnumpy配列に変換 [2017/10/22]
adash333 [2. Jupyter Notebookで以下のコードを入力]
画像をnumpy配列に変換 [2018/10/07] (現在)
行 24: 行 24:
 from PIL import Image from PIL import Image
 import numpy as np import numpy as np
 +
  
 # PILでcat.jpgを開いてグレースケール画像に変換し、NumPy配列に変換 # PILでcat.jpgを開いてグレースケール画像に変換し、NumPy配列に変換
 im = np.array(Image.open('cat.jpg').convert('L')) im = np.array(Image.open('cat.jpg').convert('L'))
 +
 +# NumPy配列のshapeと、要素のデータ型を表示
 print(im.shape, im.dtype) print(im.shape, im.dtype)
 +
 +# グレースケール化した画像のNumPy配列に変換したものを表示
 print(im) print(im)
 +
 +# 上記NumPy配列をテキストで保存
 +np.savetxt('im_ndarray.txt', im)
 </code> </code>
  
 コードを入力してから、Shift + Enterを押すと、以下のような結果になります。 コードを入力してから、Shift + Enterを押すと、以下のような結果になります。
  
-{{:pasted:20171022-234756.png}}+{{:pasted:20171023-003059.png}} 
 + 
 +上記コードについて説明します。
  
 まず、PIL(pillow)とNumPyを使うので、インポートします。 まず、PIL(pillow)とNumPyを使うので、インポートします。
行 39: 行 49:
 PILでcat.jpgを開いてグレースケール画像に変換し、NumPy配列という行列に変換します。 PILでcat.jpgを開いてグレースケール画像に変換し、NumPy配列という行列に変換します。
  
-今回は、もとのjpg画像が640x426(幅 640 pixel, 高さ 426 pixel)なので、各ピクセルのグレースケールの値(0から255)を並べた行列は、426行640列となります。+今回は、もとのjpg画像が640x426(幅 640 pixel, 高さ 426 pixel)なので、各ピクセルのグレースケールの値(0から255)を並べた行列は、426行640列となります。そのため、im.shape は、(426, 640)というタプルとなります。 
 + 
 +上記NumPy配列を、im_ndarray.txtという名前で保存します。 
 +なんと、50KBのjpg画像をNumPy配列に変換したら、6657KBにもなってしまいました。TIF画像と似たようなものだと思います。 
 + 
 +{{:pasted:20171023-002559.png}} 
 + 
 +ちなみに、im_ndarray.txtの中身は、以下のように、数字がスペースと改行で区切られて保存されています。 
 + 
 +{{:pasted:20171023-003709.png}} 
 + 
 +==== 3. 保存したNumPy配列の読み出し(テキストで保存した場合) ==== 
 +上記で保存したim_ndarray.txtを読み込む場合は、以下のコードとなります。 
 + 
 +<code> 
 +from PIL import Image 
 +import numpy as np 
 + 
 +# 上記で保存したNumPy配列を読み出す 
 +b = np.loadtxt('im_ndarray.txt'
 +print(b) 
 +</code> 
 + 
 +{{:pasted:20171023-003321.png}} 
  
-そのため、im.shape は、(426, 640)というタプルとなります。  
 ===== 参考文献 ===== ===== 参考文献 =====
 ど素人の私がこのコードを見つけるまでに、以下の3つの本の該当部分を繰り返し読みました。 ど素人の私がこのコードを見つけるまでに、以下の3つの本の該当部分を繰り返し読みました。

画像をnumpy配列に変換.txt · 最終更新: 2018/10/07 (外部編集)