画像をnumpy配列に変換

差分

この文書の現在のバージョンと選択したバージョンの差分を表示します。

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

両方とも前のリビジョン 前のリビジョン
次のリビジョン
前のリビジョン
画像をnumpy配列に変換 [2017/10/22]
adash333 [1. cat.jpgの用意]
画像を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を押すと、以下のような結果になります。 
 + 
 +{{:​pasted:​20171023-003059.png}} 
 + 
 +上記コードについて説明します。 
 + 
 +まず、PIL(pillow)とNumPyを使うので、インポートします。 
 + 
 +PILでcat.jpgを開いてグレースケール画像に変換し、NumPy配列という行列に変換します。 
 + 
 +今回は、もとの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}}
  
-{{:​pasted:​20171022-234756.png}} 
  
 ===== 参考文献 ===== ===== 参考文献 =====
ライン 69: ライン 109:
 https://​lp-tech.net/​articles/​DCw73 https://​lp-tech.net/​articles/​DCw73
  
 +
 +2013年12月9日\\
 +[OpenCV] PythonのOpenCVで画像サイズの取得\\
 +http://​yu-write.blogspot.jp/​2013/​12/​opencv-pythonopencv_9.html
  
  

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