このページで解説している内容は、以下の YouTube 動画の解説で見ることができます。

【Python入門】画像ファイルの入力(Pillowライブラリ)

【Python入門】画像ファイルの入力(Pillowライブラリ)

 ここでは、Pillowライブラリを用いて画像ファイルを読み込み、Python内で扱う基本手法について解説します。画像認識や前処理、Webアプリケーションなど、さまざまな用途で画像データを操作する際に、Pillowはとても有用です。以下では、Pillowのインストール方法、画像ファイルの読み込みに使うImage.open関数の構文、そして読み込んだ画像の属性確認や簡単な表示方法について、章立てで詳しく説明していきます。

プログラムのダウンロード

 「ダウンロード」から、JupyterLab で実行できるサンプルプログラムがダウンロードできます。ファイルは、ESET Endpoint Securityでウイルスチェックをしておりますが、ダウンロードとプログラムの実行は自己責任でお願いいたします。

1.画像ファイルの読み込みの基本

1.1. Pillowのインストールとインポート

 Pillowは非標準ライブラリですが、CPythonではpip、Anaconda/Miniconda環境ではcondaコマンドでインストールが可能です。インストール後は、PILというパッケージ名で利用します。以下の表に、主要なインストールコマンドとその概要を示します。

インストール方法コマンド説明
CPython (pip)pip install pillowpipを利用してPillowライブラリをインストール
Anaconda/Minicondaconda install -y pillowcondaコマンドで自動承認付きでインストール

Pillowの基本的なモジュールを利用するには、以下のようにImageモジュールをインポートします。

from PIL import Image

 このインポートにより、以降はImageという名前で画像ファイルの読み込みや加工の各種メソッドを利用できるようになります。

1.2. Image.open関数による画像ファイルの読み込み

 画像ファイルを読み込む際は、Image.open関数を使います。open関数と似た構文ですが、ここでは画像データを解析して、内部的にピクセル情報や色空間、フォーマットなどを保持するImageオブジェクトを生成します。主な構文とパラメータは以下の表のとおりです。

パラメータ意味
fp画像ファイルのパスまたはファイルオブジェクト(例:"sample.jpg")
mode読み込みモード(通常は省略可。'r'がデフォルトとなる)
formats読み込む画像フォーマットのリスト(オプション、特定フォーマットに限定したい場合に指定)

以下は、"sample_image.jpg"という画像ファイルを読み込み、画像の基本情報を出力する例です。

sample_image.jpg

from PIL import Image

# "sample_image.jpg"を画像ファイルとしてオープン
img = Image.open("sample_image.jpg")

# 画像の基本属性を表示
print("画像サイズ:", img.size)      # (幅, 高さ) のタプルで出力
print("画像モード:", img.mode)      # 例: 'RGB', 'L'(グレースケール)など
print("画像フォーマット:", img.format)  # JPEG, PNGなど、ファイルの形式を表示

実行結果

画像サイズ: (540, 300)
画像モード: RGB
画像フォーマット: JPEG

 このプログラムでは、Image.open関数によって読み込んだ画像がimg変数に格納され、その後、img.size、img.mode、img.formatなどの属性を利用して画像情報を確認しています。

2.画像データの活用と表示

2.1. 読み込んだ画像の属性確認と利用

 Imageオブジェクトは、読み込んだ画像データに関するさまざまな属性を保持しています。以下の表は、主な属性とその意味を示しています。

属性意味
size画像の幅と高さを示すタプル (width, height)
mode画像の色モード。例: 'RGB', 'L', 'RGBA'
format読み込んだファイルの形式。例: 'JPEG', 'PNG'

 これらの属性を利用することで、画像の前処理や解析、リサイズなどの処理を柔軟に行うことができます。

2.2. 画像の表示と簡単な編集処理

 JupyterLab環境では、画像ファイルを読み込んだ後、Notebook内で直接表示することが可能です。例えば、IPython.displayモジュールのdisplay関数を利用して画像を表示する方法は以下の通りです。

from PIL import Image
from IPython.display import display

# 画像を読み込む
img = Image.open("sample_image.jpg")

# 読み込んだ画像をNotebook上に表示
display(img)

 また、Pillowは画像の一部だけを切り出したり、リサイズ、回転などの簡単な編集処理も提供しています。たとえば、以下の例は読み込んだ画像を横幅400ピクセルにリサイズして表示する方法です。

from PIL import Image
from IPython.display import display

img = Image.open("sample_image.jpg")
# アスペクト比を維持しながらリサイズ
w, h = img.size
new_w = 400
new_h = int(h * (new_w / w))
resized_img = img.resize((new_w, new_h))
display(resized_img)

 このプログラムでは、画像の元の幅と高さから新しいサイズを計算し、img.resizeメソッドでリサイズした画像をNotebook上に表示しています。

まとめ

 ここでは、Pillowライブラリを用いた画像ファイルの読み込み方法について解説しました。まず、Pillowのインストール方法とImageモジュールのインポート方法を確認し、次にImage.open関数を用いて画像ファイルを読み込み、その後、画像の基本属性(サイズ、モード、フォーマット)の確認方法や、JupyterLab上での画像表示、さらに簡単な編集処理について学びました。これらの基本操作を習得することで、画像データの前処理や解析、視覚化といった幅広い用途にPillowを活用できるようになります。