【Python】for文を使った画像保存

【Python】for文を使った画像保存

目次

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)での画像生成と保存
  • 動的なファイル名の作成方法
  • フォルダ内の画像を一括処理する方法

これらを組み合わせることで、様々な場面で活用できます。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です