Pythonでの画像処理入門!PillowとOpenCVで学ぶ基本操作
Pythonには、画像処理に役立つ豊富なライブラリが用意されています。代表的なものは以下の通りです。
- OpenCV − リアルタイムコンピュータビジョンを主眼とした画像処理ライブラリ。2D・3D特徴量ツールキット、顔認識やジェスチャー認識、ヒューマンコンピュータインタラクション、モバイルロボティクス、物体識別など、幅広い分野で活用されています。
- NumPy / SciPy − 画像の操作や処理に利用される数値計算ライブラリ。
- scikit-image − 画像処理向けの多数のアルゴリズムを提供するライブラリ。
- Pillow(Python Imaging Library) − サムネイル作成、リサイズ、回転、ファイル形式の変換など、画像に対する基本的な操作を行うためのライブラリ。
この記事では、Pythonによる画像処理の基礎を、実際のコード例とともに解説していきます。
必要なライブラリのインストール
まず最初に行うのは、画像処理に使用するライブラリ(OpenCV、Pillowなど)のインストールです。pipコマンドを使えば簡単に導入できます。
$ pip install pillow
これだけで準備完了です。あとは自由に画像を操作できます。
画像を開いて表示する(open() と show())
まず、ファイルから画像を読み込んで表示してみましょう。表示する際に画像を回転させることもできます。
# 必要なライブラリをインポート
from PIL import Image
# 画像を開く
im = Image.open("TajMahal.jpg")
# 画像を45度回転して表示
im.rotate(45).show()
実行結果

変数 im は Pillow のオブジェクトなので、開いた画像に関するさまざまな情報を取得できます。
>>> im <PIL.JpegImagePlugin.JpegImageFile image mode=RGB size=1000x667 at 0x65AB990> >>> im.size (1000, 667) >>> im.format 'JPEG'
画像形式の変換と保存(save())
save() メソッドを使えば、画像を別の形式に変換して保存できます。
>>> im.save('TajMahal.png')
フォルダを確認すると、同じ画像が異なる2つの形式(JPEGとPNG)で保存されていることがわかります。
サムネイルの作成(thumbnail())
Pillow の thumbnail() メソッドを使うと、画像のサイズを簡単に変更できます。
>>> im.thumbnail((300, 300)) >>> im.show()
画像は次のように縮小されます。

グレースケールへの変換(convert())
カラー画像をグレースケール画像に変換することも可能です。
>>> TajMahal_gray = Image.open('TajMahal.jpg').convert('L')
>>> TajMahal_gray.show()
引数の「L」は輝度(Luminance)を表しており、これを指定することで白黒画像に変換されます。

ここまでの例は Pillow ライブラリを使用したものでしたが、OpenCV、matplotlib、NumPy といったより強力なライブラリでも画像処理が行えます。以下では、それらを使ったサンプルプログラムを紹介します。
OpenCVでグレースケール画像を表示する
OpenCV を使えば、画像を読み込む段階で直接グレースケールに変換できます。
# 必要なライブラリをインポート
import cv2
import numpy as np
from matplotlib import pyplot as plt
im = cv2.imread('TajMahal.jpg', cv2.IMREAD_GRAYSCALE)
cv2.imshow('image', im)
cv2.waitKey(0)
cv2.destroyAllWindows()
実行結果

次に、matplotlib を使って、目印となる線を画像上に描画しながら表示する方法を紹介します。
import cv2
import numpy as np
from matplotlib import pyplot as plt
im = cv2.imread('TajMahal.jpg', cv2.IMREAD_GRAYSCALE)
plt.imshow(im, cmap='gray', interpolation='bicubic')
# X軸・Y軸の目盛り値を非表示にする
plt.xticks([]), plt.yticks([])
# 目印としてシアン色の線を描画
plt.plot([200, 300, 400], [100, 200, 300], 'c', linewidth=5)
plt.show()
実行結果

このように、Pythonでは用途に応じて Pillow・OpenCV・matplotlib などを組み合わせることで、初心者でも手軽に高度な画像処理を実現できます。まずは基本的な読み込み・表示・変換から試してみてください。
-
Pythonでフォトモザイクを実装する方法をわかりやすく解説
フォトモザイク(Photomosaic)とは、1枚の画像を正方形のグリッドに分割し、その各マスを別の画像や色のブロックに置き換える技法です。離れた場所から見ると元の画像がはっきりと見えますが、近づいて観察すると、さまざまな色の小さなブロックが集まって構成されていることが分かります。この記事では、Pythonの「photomosaic」というモジュールを使って、簡単にフォトモザイク画像を作成する方法をご紹介します。photomosaicモジュールのインストールまずは以下のコマンドでphotomosaicモジュールをインストールします。依存関係としてscikit-learnモジュールも同時にダウン
-
PythonのSunPyライブラリで太陽画像をプロットする方法
Pythonでは、SunPyというパッケージを使って太陽画像を作成・表示することができます。SunPyには、各地の太陽観測所や太陽研究機関が提供する陽子フラックスや電子フラックスなど、さまざまな太陽観測データが含まれています。 SunPyは、以下のコマンドで簡単にインストールできます。 pip install sunpy AIA画像とは ここではサンプルとしてAIA画像をプロットします。AIA(Atmospheric Imaging Assembly:大気圏撮像装置)は、NASAの太陽観測衛星SDO(Solar Dynamics Observatory)に搭載された観測機器の一つで、太陽大気を