画像をnumpy配列に変換
差分
このページの2つのバージョン間の差分を表示します。
両方とも前のリビジョン前のリビジョン次のリビジョン | 前のリビジョン | ||
画像をnumpy配列に変換 [2017/10/22] – [参考文献] adash333 | 画像をnumpy配列に変換 [2018/10/07] (現在) – 外部編集 127.0.0.1 | ||
---|---|---|---|
行 1: | 行 1: | ||
===== 画像をnumpy配列に変換 ===== | ===== 画像をnumpy配列に変換 ===== | ||
- | 以下のサイトを写経してみたい。 | + | 以下のサイトのコードほとんどそのままです。 |
Python – NumPyで画像を配列として取得する\\ | Python – NumPyで画像を配列として取得する\\ | ||
投稿者: edo1z 投稿日: 09/ | 投稿者: edo1z 投稿日: 09/ | ||
https:// | https:// | ||
+ | |||
+ | ==== 1. cat.jpgの用意 ==== | ||
+ | |||
+ | https:// | ||
+ | |||
+ | {{: | ||
+ | |||
+ | {{: | ||
+ | |||
+ | 640x426のカラー画像です。 | ||
+ | |||
+ | {{: | ||
+ | |||
+ | ==== 2. Jupyter Notebookで以下のコードを入力 ==== | ||
+ | |||
+ | < | ||
+ | from PIL import Image | ||
+ | import numpy as np | ||
+ | |||
+ | |||
+ | # PILでcat.jpgを開いてグレースケール画像に変換し、NumPy配列に変換 | ||
+ | im = np.array(Image.open(' | ||
+ | |||
+ | # NumPy配列のshapeと、要素のデータ型を表示 | ||
+ | print(im.shape, | ||
+ | |||
+ | # グレースケール化した画像のNumPy配列に変換したものを表示 | ||
+ | print(im) | ||
+ | |||
+ | # 上記NumPy配列をテキストで保存 | ||
+ | np.savetxt(' | ||
+ | </ | ||
+ | |||
+ | コードを入力してから、Shift + Enterを押すと、以下のような結果になります。 | ||
+ | |||
+ | {{: | ||
+ | |||
+ | 上記コードについて説明します。 | ||
+ | |||
+ | まず、PIL(pillow)とNumPyを使うので、インポートします。 | ||
+ | |||
+ | PILでcat.jpgを開いてグレースケール画像に変換し、NumPy配列という行列に変換します。 | ||
+ | |||
+ | 今回は、もとのjpg画像が640x426(幅 640 pixel, 高さ 426 pixel)なので、各ピクセルのグレースケールの値(0から255)を並べた行列は、426行640列となります。そのため、im.shape は、(426, | ||
+ | |||
+ | 上記NumPy配列を、im_ndarray.txtという名前で保存します。 | ||
+ | なんと、50KBのjpg画像をNumPy配列に変換したら、6657KBにもなってしまいました。TIF画像と似たようなものだと思います。 | ||
+ | |||
+ | {{: | ||
+ | |||
+ | ちなみに、im_ndarray.txtの中身は、以下のように、数字がスペースと改行で区切られて保存されています。 | ||
+ | |||
+ | {{: | ||
+ | |||
+ | ==== 3. 保存したNumPy配列の読み出し(テキストで保存した場合) ==== | ||
+ | 上記で保存したim_ndarray.txtを読み込む場合は、以下のコードとなります。 | ||
+ | |||
+ | < | ||
+ | from PIL import Image | ||
+ | import numpy as np | ||
+ | |||
+ | # 上記で保存したNumPy配列を読み出す | ||
+ | b = np.loadtxt(' | ||
+ | print(b) | ||
+ | </ | ||
+ | |||
+ | {{: | ||
+ | |||
===== 参考文献 ===== | ===== 参考文献 ===== | ||
+ | ど素人の私がこのコードを見つけるまでに、以下の3つの本の該当部分を繰り返し読みました。 | ||
+ | < | ||
+ | |||
+ | <iframe style=" | ||
+ | |||
+ | & | ||
+ | |||
+ | <iframe style=" | ||
+ | |||
+ | & | ||
+ | |||
+ | <iframe style=" | ||
+ | |||
+ | </ | ||
Python – NumPyで画像を配列として取得する\\ | Python – NumPyで画像を配列として取得する\\ | ||
行 27: | 行 109: | ||
https:// | https:// | ||
+ | |||
+ | 2013年12月9日\\ | ||
+ | [OpenCV] PythonのOpenCVで画像サイズの取得\\ | ||
+ | http:// | ||
画像をnumpy配列に変換.1508682559.txt.gz · 最終更新: 2018/10/07 (外部編集)