目次

画像をnumpy配列に変換

以下のサイトのコードほとんどそのままです。

Python – NumPyで画像を配列として取得する

投稿者: edo1z 投稿日: 09/27/2015

https://endoyuta.com/2015/09/27/python-numpyで画像を配列として取得する/

1. cat.jpgの用意

https://pixabay.com/ から、猫の画像をダウンロードして、cat.jpg という名前で保存します。

640×426のカラー画像です。

2. Jupyter Notebookで以下のコードを入力

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)

コードを入力してから、Shift + Enterを押すと、以下のような結果になります。

上記コードについて説明します。

まず、PIL(pillow)とNumPyを使うので、インポートします。

PILでcat.jpgを開いてグレースケール画像に変換し、NumPy配列という行列に変換します。

今回は、もとのjpg画像が640×426(幅 640 pixel, 高さ 426 pixel)なので、各ピクセルのグレースケールの値(0から255)を並べた行列は、426行640列となります。そのため、im.shape は、(426, 640)というタプルとなります。

上記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('im_ndarray.txt')
print(b)

参考文献

ど素人の私がこのコードを見つけるまでに、以下の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で画像を配列として取得する/

行列による画像処理 基礎編&目次 ~Python画像処理の再発明家~

20170405

https://qiita.com/secang0/items/1229212a37d8c9922901

NumPyで画像処理

http://www.mwsoft.jp/programming/computer_vision_with_python/1_3_numpy.html

初めてのPython画像処理

https://qiita.com/uosansatox/items/4fa34e1d8d95d8783536


https://lp-tech.net/articles/DCw73


2013年12月9日

[OpenCV] PythonのOpenCVで画像サイズの取得

http://yu-write.blogspot.jp/2013/12/opencv-pythonopencv_9.html









===== リンク =====