Pythonの画像処理: スライダーで色調補正フィルターの適用方法

目次

  1. はじめに
  2. 必要なライブラリのインストール
  3. 色調補正フィルターとは
  4. スライダーの作成
  5. 画像クロップ・リサイズ
  6. 色調補正フィルターを適用する関数
  7. 実行結果
  8. まとめ
  9. 参考資料

1. はじめに

Pythonプログラミングにおいて、画像処理は重要な分野の一つです。この記事では、「スライダーで色調補正フィルターを適用する方法」について詳しく解説します。

2. 必要なライブラリのインストール

このチュートリアルでは、以下のライブラリを使用します。

インストールは以下のコマンドで行えます。

pip install opencv-python-headless Pillow numpy

3. 色調補正フィルターとは

色調補正フィルターは、画像の色を変更することで、明るさやコントラスト、彩度を調整することができます。

4. スライダーの作成

スライダーは、GUIアプリケーションで簡単に値を変更できるようにするために使用されます。OpenCVを使用して作成することができます。

import cv2

def on_trackbar(val):
    pass

window_name = "Color Correction"
cv2.namedWindow(window_name)

cv2.createTrackbar("Brightness", window_name, 50, 100, on_trackbar)
cv2.createTrackbar("Contrast", window_name, 50, 100, on_trackbar)
cv2.createTrackbar("Saturation", window_name, 50, 100, onackbar)

5. 画像クロップ・リサイズ

画像を読み込み、クロップおよびリサイズを行います。

from PIL import Image

img = Image.open("example.jpg")
width, height = img.size

img = img.crop((0, 0, width, height))
img = img.resize((500, 500), Image.ANTIALIAS)

6. 色調補正フィルターを適する関数

import numpy as np

def apply_color_correction(img, brightness, contrast, saturation):
    img = np.array(img, dtype=np.float)

    img = np.clip(((img - 128) * contrast) + 128 + brightness, 0, 255)
    img = cv2.cvtColor(img, cv2.COLOR_RGB2HSV)

    img[..., 1] = np.clip(img[..., 1] * saturation, 0, 255)
    img = cv2.cvtColor(img, cv2.COLOR_HSV2RGB)

    return Image.fromarray(img.astype(np.uint8))

7. 実行結果

while True:
    brightness = cv2.getTrackbarPos("Brightness", window_name) - 50
    contrast = (cv2.getTrackbarPos("Contrast", window_name) / 50)
    saturation = cv2.getTrackbarPos("Saturation", window_name) / 50

    new_img = apply_color_correction(img, brightness, contrast, saturation)

    cv2.imshow(window_name, np.array(new_img))

    key = cv2.waitKey(50)
    if key == 27:  # ESCキーで終了
        break

cv2.destroyAllWindows()

8. まとめ

このチュートリアルでは、Pythonを使ってスライダーで色調補正フィルターを適用する方法を学びました。OpenCV, Pillow, および NumPy のライブラリを使用して、さまざまな色調補正効果を簡単に適用できることができます。

9. 参考資料