Python
 Computer >> コンピューター >  >> プログラミング >> Python

Pythonで画像を操作する方法|Pillowライブラリの基本から実践まで

Pythonで画像処理を行う際に、最も人気があり事実上の標準とされているライブラリがPillowです。Pillowは旧Python Image Library(PIL)の後継バージョンであり、シンプルな操作から高度な画像加工まで幅広い機能を提供しています。また、SciPyやMatplotlibなど他のPythonライブラリにおける簡易的な画像サポートの基盤としても利用されています。

Pillowのインストール方法

作業を始める前に、PythonとPillowが必要です。Linux環境では、Fedora、Debian/Ubuntu、ArchLinuxなどの主要ディストリビューションにおいて、以前はPILが含まれていたパッケージにPillowが同梱されているため、すでにインストール済みの場合が多いです。

最も簡単なインストール方法はpipを使うことです。以下のコマンドを実行しましょう。

pip install pillow

画像の読み込みと表示

まず、Pillowライブラリの重要な機能を紹介するためのテスト画像を用意します。ここでは「statue_of_unity.jpg」という写真をサンプルとして使用します。画像をダウンロードし、カレントワーキングディレクトリに保存してください。

#Load and show an image with Pillow
from PIL import Image

#Load the image
img = Image.open('statue_of_unity.jpg')

#Get basic details about the image
print(img.format)
print(img.mode)
print(img.size)

#show the image
img.show()

実行結果

JPEG
RGB
(400, 260)

Pythonで画像を操作する方法|Pillowライブラリの基本から実践まで

このコードでは、Imageクラスのopen()関数を使って画像を直接読み込んでいます。この関数は、画像のピクセルデータと詳細情報を含む画像オブジェクトを返します。

  • formatプロパティ: 画像形式(例:png、jpeg)を返します
  • modeプロパティ: ピクセルチャンネル形式(例:CMYK、RGB)を返します
  • sizeプロパティ: 画像の寸法をピクセル単位で返します(例:400×260)

show()関数を呼び出すと、OSのデフォルトアプリケーションを使って画像が表示されます。

画像をグレースケールに変換する

画像をグレースケールに変換して表示・保存するのは非常に簡単です。以下のコードをご覧ください。

#Import required library
from PIL import Image
#Read an image & convert it to gray-scale
image = Image.open('statue_of_unity.jpg').convert('L')
#Display image
image.show()
#Save image
image.save('statue_of_unity_gs.jpg')

実行結果

Pythonで画像を操作する方法|Pillowライブラリの基本から実践まで

プログラムを実行すると、カレントワーキングディレクトリに「statue_of_unity_gs.jpg」というファイルが作成されます。

別の画像形式に変換する

ある形式(jpeg)の画像を別の形式(たとえばpng)に変換することも簡単に行えます。

from PIL import Image

image = Image.open('statue_of_unity.jpg')
image.save('statue_of_unity.png')

新しい画像ファイルが作成され、デフォルトのディレクトリに保存されます。

画像のサイズを変更する(リサイズ)

現在の画像ファイルのサイズは400×260pxです。これを440×600pxに変更したい場合は、次のようにします。

from PIL import Image

image = Image.open('statue_of_unity.jpg')
newImage = image.resize((440, 600))
newImage.save('statue_of_unity_440&600.jpg')

新しいファイル「statue_of_unit_440*600.jpg」(440×600px)が作成され、カレントワーキングディレクトリに保存されます。

Pythonで画像を操作する方法|Pillowライブラリの基本から実践まで

ご覧のとおり、resize()メソッドは元の画像を指定したサイズに拡大・縮小します。切り抜き(クロップ)ではないため、意図しない結果になる場合もあります。

既存の画像を切り抜きたい場合は、crop()メソッドを使用します。

image.crop(box=None)

画像を回転させる

以下のプログラムは、画像を読み込み、45度回転させて外部ビューアで表示します。

from PIL import Image

image = Image.open('statue_of_unity.jpg')
image.rotate(45).show()

Pythonで画像を操作する方法|Pillowライブラリの基本から実践まで

サムネイルを作成する

以下のプログラムは、カレントワーキングディレクトリ内のすべてのJPEG画像に対して128×128のサムネイルを作成します。

from PIL import Image
import glob, os

size = 128, 128

for infile in glob.glob("*.jpg"):
    file, ext = os.path.splitext(infile)
    image = Image.open(infile)
    image.thumbnail(size, Image.ANTIALIAS)
    image.save(file + ".thumbnail", "JPEG")

実行結果

Pythonで画像を操作する方法|Pillowライブラリの基本から実践まで

このスクリプトを実行すると、「statue_of_unity.jpg」を含むカレントディレクトリ(c:\python\python361)内のすべてのJPEGファイルのサムネイルが生成されます。

Pillowを使えば、わずか数行のコードで画像の読み込み、変換、リサイズ、回転、サムネイル生成といった多彩な操作が可能になります。ぜひ実際に試してみてください。

  1. Python(Pillow)で画像サイズに基づいて画像をフィルタリング・リサイズする方法

    Pythonには、Pillow、Python Imaging Library(PIL)、scikit-image、OpenCVなど、画像処理に使えるライブラリが多数用意されています。本記事では、その中でもPillowを使用します。Pillowは画像の操作に関する標準的な手順を数多く提供しており、JPEG、PNG、GIF、TIFF、BMPなど、幅広い画像ファイル形式に対応しているためです。なお、PillowはPython Imaging Library(PIL)をベースに構築されたライブラリであり、元となったPILよりも多くの機能を備えています。PillowのインストールPillowはpipを使

  2. Pythonで画像を読み込む方法:OpenCVとPILを使った基本操作を解説

    OpenCVによる画像処理OpenCV(Open Source Computer Vision)は、機械学習とコンピュータビジョンのために開発されたオープンソースのプログラミングライブラリです。コンピュータビジョンアプリケーション開発のための共通基盤を提供し、商用製品への機械学習の導入を迅速化します。OpenCVには、2,500以上の最適化されたアルゴリズムが含まれており、古典的な手法から最先端の手法まで、コンピュータビジョンと機械学習の両分野をカバーしています。これらの豊富なアルゴリズムにより、顔検出・認識、物体识别、動画内の人間の動作の分類、カメラの動きの追跡、複数画像の結合による高解像度