1. はじめに
Pythonで画像処理を行いたいと考えている方にとって、最初の一歩となるのが「画像ファイルの読み込み」です。
この記事では、Pythonで画像ファイル(JPEG、PNGなど)を読み込む方法を、初心者にもわかりやすく解説します。
具体的には、定番ライブラリであるPillow(PIL)
とOpenCV
の使い方を中心に紹介し、それぞれの違いや用途に応じた使い分けも説明します。
Pythonを使って画像を加工・解析・機械学習に活用したい方の基礎力を固める内容です。
2. Pythonで画像ファイルを読み込む基本
Pillow(PIL)ライブラリで画像を読み込む
Pillow(旧PIL)は、Python標準の画像処理ライブラリであり、JPEGやPNGなどの画像を簡単に読み込むことができます。
まずはPillowをインストールしましょう。
pip install Pillow
次に、画像を読み込む基本的なコードです。
from PIL import Image
# 画像ファイルを開く
img = Image.open("sample.jpg")
# 画像の情報を表示
print(img.format, img.size, img.mode)
# 画像を表示
img.show()
実行結果:
JPEG (640, 480) RGB
※別ウィンドウで画像が表示されます
OpenCVで画像を読み込む
OpenCVはコンピュータビジョンに特化した強力なライブラリです。色空間の扱い方が異なるため、RGBとBGRの違いに注意が必要です。
pip install opencv-python
OpenCVを使った画像の読み込み方法は以下の通りです。
import cv2
# 画像を読み込む(カラー)
img = cv2.imread("sample.jpg")
# 画像の情報を表示
print(img.shape)
# 画像をウィンドウに表示
cv2.imshow("Image", img)
cv2.waitKey(0)
cv2.destroyAllWindows()
実行結果:
(480, 640, 3)
※OpenCVウィンドウで画像が表示されます
3. よくある使い方・応用例
画像をリサイズする(Pillow)
読み込んだ画像のサイズを変更する例です。
from PIL import Image
img = Image.open("sample.jpg")
# 幅320、高さ240にリサイズ
resized_img = img.resize((320, 240))
# 保存
resized_img.save("resized_sample.jpg")
実行結果:
画像が「resized_sample.jpg」として保存されます(320×240ピクセル)
画像をグレースケールで読み込む(OpenCV)
import cv2
# グレースケールで読み込む
gray_img = cv2.imread("sample.jpg", cv2.IMREAD_GRAYSCALE)
# 表示
cv2.imshow("Gray Image", gray_img)
cv2.waitKey(0)
cv2.destroyAllWindows()
実行結果:
グレースケール(白黒)画像が表示されます
画像の一部をトリミング(切り出し)する
from PIL import Image
img = Image.open("sample.jpg")
# (左, 上, 右, 下)の座標で切り出す
cropped = img.crop((100, 100, 400, 300))
# 保存
cropped.save("cropped_sample.jpg")
実行結果:
画像の一部が切り出され「cropped_sample.jpg」として保存されます
4. 注意点・エラー対策
ファイルが存在しない場合のエラー
存在しないファイルを読み込もうとするとFileNotFoundError
が発生します。以下のように対策できます。
from PIL import Image
import os
file_path = "sample.jpg"
if os.path.exists(file_path):
img = Image.open(file_path)
img.show()
else:
print("ファイルが見つかりませんでした。")
OpenCVのBGRとPillowのRGBの違いに注意
OpenCVで読み込んだ画像はBGR形式、PillowはRGB形式です。Matplotlibなどで表示する際に色がずれることがあります。
以下のコードでBGR→RGBに変換できます。
import cv2
import matplotlib.pyplot as plt
img = cv2.imread("sample.jpg")
# BGRからRGBへ変換
img_rgb = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
plt.imshow(img_rgb)
plt.axis("off")
plt.show()
5. まとめ
今回は、Pythonで画像ファイルを読み込む方法について、PillowとOpenCVの両方を用いて解説しました。
それぞれの特徴を理解し、用途に応じて使い分けることで、画像処理の幅が広がります。
例えば「簡単な表示や保存ならPillow」、「画像解析や機械学習との連携ならOpenCV」などがおすすめです。
画像の読み込みは、顔認識、物体検出、サムネイル生成などの実務に直結する技術です。ぜひ基本をマスターして、実践に活かしてください!