ユーザ用ツール

サイト用ツール


画像をnumpy配列に変換

差分

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

この比較画面へのリンク

次のリビジョン
前のリビジョン
画像をnumpy配列に変換 [2017/10/22] – 作成 adash333画像をnumpy配列に変換 [2018/10/07] (現在) – 外部編集 127.0.0.1
行 1: 行 1:
 ===== 画像をnumpy配列に変換 ===== ===== 画像をnumpy配列に変換 =====
  
-以下のサイトを写経してみたい+以下のサイトのコードほとんどそのままです
  
 +Python – NumPyで画像を配列として取得する\\
 +投稿者: edo1z 投稿日: 09/27/2015\\
 https://endoyuta.com/2015/09/27/python-numpyで画像を配列として取得する/ https://endoyuta.com/2015/09/27/python-numpyで画像を配列として取得する/
 +
 +==== 1. cat.jpgの用意 ====
 +
 +https://pixabay.com/ から、猫の画像をダウンロードして、cat.jpg という名前で保存します。
 +
 +{{:pasted:20171022-234329.png}}
 +
 +{{:pasted:20171022-234304.png}}
 +
 +640x426のカラー画像です。
 +
 +{{:pasted:20171022-234705.png}}
 +
 +==== 2. Jupyter Notebookで以下のコードを入力 ====
 +
 +<code>
 +from PIL import Image
 +import numpy as np
 +
 +
 +# PILでcat.jpgを開いてグレースケール画像に変換し、NumPy配列に変換
 +im = np.array(Image.open('cat.jpg').convert('L'))
 +
 +# NumPy配列のshapeと、要素のデータ型を表示
 +print(im.shape, im.dtype)
 +
 +# グレースケール化した画像のNumPy配列に変換したものを表示
 +print(im)
 +
 +# 上記NumPy配列をテキストで保存
 +np.savetxt('im_ndarray.txt', im)
 +</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で画像を配列として取得する\\
 +投稿者: edo1z 投稿日: 09/27/2015\\
 https://endoyuta.com/2015/09/27/python-numpyで画像を配列として取得する/ https://endoyuta.com/2015/09/27/python-numpyで画像を配列として取得する/
  
行 12: 行 99:
 20170405\\ 20170405\\
 https://qiita.com/secang0/items/1229212a37d8c9922901 https://qiita.com/secang0/items/1229212a37d8c9922901
 +
 +NumPyで画像処理\\
 +http://www.mwsoft.jp/programming/computer_vision_with_python/1_3_numpy.html
  
 初めてのPython画像処理\\ 初めてのPython画像処理\\
行 17: 行 107:
  
  
 +https://lp-tech.net/articles/DCw73
  
  
 +2013年12月9日\\
 +[OpenCV] PythonのOpenCVで画像サイズの取得\\
 +http://yu-write.blogspot.jp/2013/12/opencv-pythonopencv_9.html
  
  

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

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki