【Python】for文を使った画像保存
目次
- Pythonでのfor文を使った画像保存とは
- matplotlibを用いた画像の連続保存
- OpenCVを用いた画像の連続保存
- PIL(Pillow)を用いた画像の連続保存
- ファイル名の動的生成
- 大量の画像を一括処理する方法
- まとめ
Pythonでのfor文を使った画像保存とは
Pythonで画像を保存する際、for文を使うことで複数の画像を自動的に処理できます。 例えば、画像の連番保存や、大量のデータを一括で保存する場面で活用されます。 本記事では、matplotlib、OpenCV、Pillow(PIL)の3つのライブラリを使った方法を解説します。
matplotlibを用いた画像の連続保存
matplotlib
はグラフ描画ライブラリですが、画像の保存にも使えます。
import matplotlib.pyplot as plt
import numpy as np
# 10枚の画像を連続保存
for i in range(10):
x = np.linspace(0, 10, 100)
y = np.sin(x + i) # iを変化させて異なるグラフを作る
plt.plot(x, y)
plt.title(f"Graph {i}")
plt.savefig(f"graph_{i}.png") # 画像を保存
plt.close() # メモリ解放
上記のコードでは、異なるsin波のグラフを10枚作成し、それぞれ異なるファイル名で保存しています。
OpenCVを用いた画像の連続保存
OpenCVは画像処理ライブラリで、画像の保存や編集が可能です。
import cv2
import numpy as np
# 10枚の画像を生成して保存
for i in range(10):
img = np.zeros((100, 100, 3), dtype=np.uint8) # 黒い画像を生成
img[:] = (i * 25, 0, 255 - i * 25) # 色を変化させる
cv2.imwrite(f"image_{i}.png", img) # 画像を保存
このコードでは、背景色が異なる10枚の画像を作成し、cv2.imwrite()
で保存しています。
PIL(Pillow)を用いた画像の連続保存
PIL(Pillow)は画像を扱うためのライブラリで、簡単に画像を保存できます。
from PIL import Image, ImageDraw
# 10枚の画像を生成して保存
for i in range(10):
img = Image.new("RGB", (100, 100), (255, 255, 255)) # 白い背景
draw = ImageDraw.Draw(img)
draw.rectangle([10 + i, 10 + i, 90 - i, 90 - i], outline="black", width=3)
img.save(f"rectangle_{i}.png") # 画像を保存
上記のコードでは、異なる大きさの四角形を持つ画像を10枚生成し、保存しています。
ファイル名の動的生成
画像を保存する際、ファイル名に日付や時刻、ランダムな値を含めることで、ユニークなファイル名を作成できます。
import datetime
for i in range(5):
timestamp = datetime.datetime.now().strftime("%Y%m%d_%H%M%S")
filename = f"image_{timestamp}_{i}.png"
print(filename) # image_20250101_123456_0.png のような形式
これにより、保存時のファイル名の重複を防ぐことができます。
大量の画像を一括処理する方法
例えば、あるフォルダ内の画像を読み込んで一括で処理・保存する場合は以下のようにします。
import os
from PIL import Image
input_folder = "input_images"
output_folder = "output_images"
os.makedirs(output_folder, exist_ok=True)
# フォルダ内の全画像を処理
for filename in os.listdir(input_folder):
if filename.endswith(".jpg") or filename.endswith(".png"):
img = Image.open(os.path.join(input_folder, filename))
img_resized = img.resize((200, 200)) # サイズ変更
img_resized.save(os.path.join(output_folder, filename)) # 保存
これにより、input_images
フォルダ内のすべての画像をリサイズして output_images
に保存できます。
まとめ
Pythonではfor文を使うことで、簡単に複数の画像を自動保存できます。 この記事では以下の方法を紹介しました:
- matplotlibでのグラフ画像の連続保存
- OpenCVでの画像処理と保存
- Pillow(PIL)での画像生成と保存
- 動的なファイル名の作成方法
- フォルダ内の画像を一括処理する方法
これらを組み合わせることで、様々な場面で活用できます。