スポンサーリンク

Chainer用の画像処理メモ(4)pythonでの画像の操作 “from PIL import Image”

機械学習で、Chainer用の画像→ndarray変換を行うために、pythonの勉強をしている。

http://twosquirrel.mints.ne.jp/?p=20115

前回は、ファイルの読み書き について、以下の本で勉強してみた。

今回は、●17章 画像の操作 の一部を写経してみたい。

内容はPILの扱い方となる。OpenCVについては、以下にメモしました。

http://twosquirrel.mints.ne.jp/?p=20039

(環境)
Panasonic CF-RZ4
Windows 8.1 Pro
Anaconda 4.4.0
Python 3.5
Chainer 2.0
OpenCV3

(1)コンピュータ画像の基礎

色とRGBA値:色の三原色(赤、緑、青)と、アルファ値(不透明度)、それぞれ0-255の整数値

カラー画像には、ピクセル(画素)の一つずつに、RGBA値が割り当てられる。

Pillow(PIL)では、RGBA値は4つの整数値のタプルtuple(赤、緑、青、α)で表される。(α = 255 のとき、完全に不透明)

赤 (255, 0, 0, 255)

image

(0, 255, 0, 255)が limeで、greenは(0,128, 0, 255)らしい。。。

import 文の書き方は、"from PIL import Image"といった書き方が推奨されているとかなんとか。。。

image

(2)PIL(pillow)で画像を操作

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

image

from PIL import Image
# cat.jpg(横640x縦426のjpgファイル)を開く
cat_im = Image.open('cat.jpg’)
cat_im.size

image

from PIL import Image
cat_im = Image.open('cat.jpg’)
width, height = cat_im.size
width

image

from PIL import Image
cat_im = Image.open('cat.jpg’)
cat_im.save('cat.png’)

すると、たしかに、cat.png という名前でpngファイルが新たに保存される。

image

from PIL import Image

# RGBA形式で、幅100x高さ200、背景色が紫色のImageオブジェクト
im = Image.new('RGBA’, (100, 200), 'purple’)
im.save('purpleImage.png’)

# 背景色を省略すると、完全透明な黒(0, 0, 0, 0)が
# デフォルトの色として使われる
im2 = Image.new('RGBA’, (20, 20))
im2.save('transparentImage.png’)

image

(3)画像をJupyter Notebookにインライン表示させたい場合

%matplotlib inline

from PIL import Image
import matplotlib.pyplot as plt
import numpy as np

cat_im = Image.open('cat.jpg’)
plt.imshow(np.array(im))

image

(4)画像のサイズを変更する PILのresize()メソッド

%matplotlib inline

from PIL import Image
import matplotlib.pyplot as plt
import numpy as np

cat_im = Image.open('cat.jpg’)
width, height = cat_im.size
quartersized_im = cat_im.resize((int(width/2), int(height/2)))
quartersized_im.save('quartersized.png’)

# Jupyter Notebook上で表示
im = Image.open(“quartersized.png", “r")
plt.imshow(np.array(im))

image

image

(参考)

Jupyter上でPIL画像を表示する
Tatejimaru137
2016年02月27日に更新
https://qiita.com/Tatejimaru137/items/44646c9bb3799768fa81

次は、最難関のnumpy配列について勉強してみたい

スポンサーリンク