===== 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日に投稿