===== PILで画像切り抜きの使い方 =====
機械学習で画像を切り抜きたいときがある。そんなときは、以下のようにPIL(Pillow)を用いると便利。Jupyter Notebookで可視化するためにmatplotlibとnumpyも利用する。
==== 開発環境 ====
Windows8.1\\
Python 3.6.1\\
Anaconda 4.4.0 (64-bit)\\
Tensorflow 1.2.1\\
Keras 2.0.6\\
==== (1)PILのインストール ====
PIL(pillow)は、あらかじめ、Anacondaに入っているが、他の環境で、import PILでエラーが出る場合は、コマンドプロンプトで、
pip install pillow
でPILをインストールすることができる。
==== (2)画像の用意 ====
[[https://pixabay.com/ja/%E3%82%AE%E3%83%AA%E3%82%B7%E3%83%A3-%E3%82%A2%E3%83%86%E3%83%8D-%E5%88%97-%E5%BD%AB%E5%88%BB-%E3%83%91%E3%83%AB%E3%83%86%E3%83%8E%E3%83%B3%E7%A5%9E%E6%AE%BF-%E3%83%A2%E3%83%8B%E3%83%A5%E3%83%A1%E3%83%B3%E3%83%88-2549507/|こちら(外部リンク)]]から、1280x856の画像をダウンロードして、ipynbと同じフォルダに、greece.jpgという名前で保存。
{{:pasted:20170811-183422.png}}
{{:pasted:20170811-105957.png}}
この画像の右上の部分だけを切り抜いて、jupyter notebook上に表示しつつ、切り抜いた画像をフォルダにも新たに保存したい!
==== (3)画像の切り抜きと保存 ====
jupyter notebookで以下のコードをコピペして、Shift+Enter
# coding:utf-8
from PIL import Image
import matplotlib.pyplot as plt
import numpy as np
# Jupyterでインライン表示するための宣言
%matplotlib inline
# 画像の読み込み
img = Image.open("./greece.jpg")
# 画像をarrayに変換
im_list = np.asarray(img)
#貼り付け
plt.imshow(im_list)
#表示
print("./greece .jpg")
print(img.size)
plt.show()
# 画像の切り抜き(PIL)
width = img.size[0]
height = img.size[1]
img2 = img.crop(
(
width -560,
0,
width - 50,
height - 300
)
)
img2.save("img2.jpg")
#画像をarrayに変換
im_list = np.asarray(img2)
#貼り付け
plt.imshow(im_list)
#表示
print("img2.jpg")
print(img2.size)
plt.show()
{{:pasted:20170811-112909.png}}
{{:pasted:20170811-112942.png}}
これにより、元画像greece.jpgの右上の部分の切り抜き画像が、greece.jpgと同じフォルダに、img2.jpgという名前で保存される。また、その結果も、jupyter notebookで見ながら、切り抜き位置を簡単に調整できる。
{{:pasted:20170811-110751.png}}
{{:pasted:20170811-183650.png}}
===== 参考 =====
http://qiita.com/ukwksk/items/483d1b9e525667b77187\\
python3系でのPython Image Libraryの使用方法
http://www.mwsoft.jp/programming/computer_vision_with_python/1_1_pil.html\\
Pillow(Python Imaging Library)のインストールと簡単なサンプルコード
http://python-remrin.hatenadiary.jp/entry/2017/05/20/181211\\
20170520 PILの使い方(1)
http://matthiaseisen.com/pp/patterns/p0202/\\
Crop Images with PIL/Pillow
画像の切り抜きは、crop
thumbnailは、破壊的、元画像がなくなるので、あらかじめコピーを作っておいたほうが良い
resize
http://qiita.com/zaburo/items/5637b424c655b136527a\\
Matplotlibで画像を表示
zaburo
2015年12月27日に投稿