ユーザ用ツール

サイト用ツール


サイドバー

目次

機械学習とは

プログラミング無しで機械学習

機械学習プログラミング入門

初めてのKeras2.0

初めてのTensorflow(YouTube)

初めてのChainer2.0

初めてのビットコイン

ビットコイン用語集

初めてのSolidityプログラミング

初めての医療統計

初めてのエクセルで医療統計

初めてのEZRで医療統計

初めてのRStudioでレポート作成

初めてのImageJで画像解析

スマホアプリ作成ソフトIonic3

スマホアプリ作成ソフトIonic4

Ionicのためのjavascript tips

その他

NiftyCloudMobileBackend

税金など

Dokuwiki

sidebar

画像をnumpy配列に変換

画像を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つの本の該当部分を繰り返し読みました。

     

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

リンク

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