ITいろいろ

プログラミングやクラウド、データ解析など、ITにかかわることをいろいろと書いています。

Pillowを使ってもっと自由に画像を回転

前回OpenCVを使って画像を回転してみました。 ただ、回転は90度、180度、270度できないため、もっと自由に回転ができるPillowというライブラリを使ってみようと思います。

コードの紹介

# Pillowのインストール(初回のみ)
!pip install pillow


# インポート Pillow(PIL)の中のImageモジュールを使う
from PIL import Image

# 画像ファイルの読み込み
img = Image.open("Lenna.jpg")

# 時計回りに30度回転
img_30 = img.rotate(30)

# 表示
img_30

出力結果

回転できましたね。ソースもrotate(角度)ととてもシンプルです。

その他rotateのオプション

全画面表示

rotate(角度)だけだと、画像の縦横サイズは変わりません。そのため、画像が切れてしまいます。以下のようにexpandオプションを入れることで全画面表示することができます。

img_30 = img.rotate(30, expand=1)

回転軸を変える

通常は画像の中心を軸にして回転します。以下のようにcenterオプションに座標を入れることで、回転軸を変えることができます。

img_30 = img.rotate(30, center=(0,0))

画像を移動させる

先ほどの画面で少し上に寄ってしまったため、translateオプションで画像をずらすことができます。以下はy軸を100ずらしています。

img_30 = img.rotate(30, center=(0,0), translate=(0,100))

背景色を変える

filcolorオプションでRGBを指定することで、背景色を変えることができます。

img_30 = img.rotate(30, fillcolor=(255,0,0))

OpenCVとPillow、どっち?

結局どちらを使うのが良いかですが、

  • OpenCV:動画や分析などに便利  OpenCVにはUSBカメラなどから動画を取得することも簡単にできます。また取得した画像は配列で取得できるため、そこから機械学習などデータ分析をすることも可能なので、AIアプリを作る、などには向いています。

  • Pillow:単純な画像変換  今回の回転など、画像をちょっといじる分にはPillowの方が向いています。

また回転以外の処理方法などについてもこれから挙げていこうと思います!