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)
(0, 255, 0, 255)が limeで、greenは(0,128, 0, 255)らしい。。。
import 文の書き方は、"from PIL import Image"といった書き方が推奨されているとかなんとか。。。
(2)PIL(pillow)で画像を操作
https://pixabay.com/ から、猫の画像をダウンロードして、cat.jpg という名前で保存。
from PIL import Image
# cat.jpg(横640x縦426のjpgファイル)を開く
cat_im = Image.open('cat.jpg’)
cat_im.size
from PIL import Image
cat_im = Image.open('cat.jpg’)
width, height = cat_im.size
width
from PIL import Image
cat_im = Image.open('cat.jpg’)
cat_im.save('cat.png’)
すると、たしかに、cat.png という名前でpngファイルが新たに保存される。
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’)
(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))
(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))
(参考)
Jupyter上でPIL画像を表示する
Tatejimaru137
2016年02月27日に更新
https://qiita.com/Tatejimaru137/items/44646c9bb3799768fa81
次は、最難関のnumpy配列について勉強してみたい
ディスカッション
コメント一覧
まだ、コメントがありません