ユーザ用ツール

サイト用ツール


画像をnumpy配列に変換

差分

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

この比較画面へのリンク

両方とも前のリビジョン前のリビジョン
次のリビジョン
前のリビジョン
画像をnumpy配列に変換 [2017/10/22] – [画像をnumpy配列に変換] adash333画像をnumpy配列に変換 [2018/10/07] (現在) – 外部編集 127.0.0.1
行 9: 行 9:
 ==== 1. cat.jpgの用意 ==== ==== 1. cat.jpgの用意 ====
  
-https://pixabay.com/ から、猫の画像をダウンロードして、cat.jpg という名前で保存。+https://pixabay.com/ から、猫の画像をダウンロードして、cat.jpg という名前で保存します 
 + 
 +{{:pasted:20171022-234329.png}} 
 + 
 +{{:pasted:20171022-234304.png}} 
 + 
 +640x426のカラー画像です。 
 + 
 +{{:pasted:20171022-234705.png}} 
 + 
 +==== 2. Jupyter Notebookで以下のコードを入力 ====
  
 <code> <code>
 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}}
  
  
 ===== 参考文献 ===== ===== 参考文献 =====
 +ど素人の私がこのコードを見つけるまでに、以下の3つの本の該当部分を繰り返し読みました。
  
 +<html>
 +
 +<iframe style="width:120px;height:240px;" marginwidth="0" marginheight="0" scrolling="no" frameborder="0" src="//rcm-fe.amazon-adsystem.com/e/cm?lt1=_blank&bc1=000000&IS2=1&bg1=FFFFFF&fc1=000000&lc1=0000FF&t=twosquirrel-22&o=9&p=8&l=as4&m=amazon&f=ifr&ref=as_ss_li_til&asins=4873117585&linkId=5239e874ec4f1301cf95b0c8cfc497a3"></iframe>
 +
 +&nbsp;&nbsp;
 +
 +<iframe style="width:120px;height:240px;" marginwidth="0" marginheight="0" scrolling="no" frameborder="0" src="//rcm-fe.amazon-adsystem.com/e/cm?lt1=_blank&bc1=000000&IS2=1&bg1=FFFFFF&fc1=000000&lc1=0000FF&t=twosquirrel-22&o=9&p=8&l=as4&m=amazon&f=ifr&ref=as_ss_li_til&asins=4274221075&linkId=a28404f93dce25380672e34e6da81cbf"></iframe>
 +
 +&nbsp;&nbsp;
 +
 +<iframe style="width:120px;height:240px;" marginwidth="0" marginheight="0" scrolling="no" frameborder="0" src="//rcm-fe.amazon-adsystem.com/e/cm?lt1=_blank&bc1=000000&IS2=1&bg1=FFFFFF&fc1=000000&lc1=0000FF&t=twosquirrel-22&o=9&p=8&l=as4&m=amazon&f=ifr&ref=as_ss_li_til&asins=487311778X&linkId=ee1b4d5d66ceabe44b7c1445e0846348"></iframe>
 +
 +</html>
  
 Python – NumPyで画像を配列として取得する\\ Python – NumPyで画像を配列として取得する\\
行 42: 行 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配列に変換.1508682893.txt.gz · 最終更新: 2018/10/07 (外部編集)

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki