Python OpenCVでトラックバーを用いて色相を変換してみた。(ソースコードとサンプル動画有)

2023年3月26日

はじめに

今回、紹介するソースコードは以前紹介した物に変更を加えたものです。↓
Python OpenCVで一定以下の色相値を統一する

実行環境

Python:3.9.7
OpenCV:4.5.3

ソースコードに関して

OpenCV(Python)でトラックバーで指定した値以下の色相を指定値に変換するソースコードを紹介します。
import cv2
import numpy as np

def nothing(x):
    pass

#cv2.WINDOW_NORMALにするとウィンドウの大きさを自身で調整可能。
cv2.namedWindow('ColorConversion', cv2.WINDOW_NORMAL)

#色相値を指定する為のトラックバーを作成
cv2.createTrackbar('Hue', 'ColorConversion', 0, 255, nothing)

#画像の読み込み 第1引数:ファイル指定 第2引数:以下の読み込み方法を指定
#cv2.IMREAD_COLOR       (引数:1。カラーのまま読み込み。デフォルト値。)
img = cv2.imread("./Gradation.png", cv2.IMREAD_COLOR)

#BGR→HSV変換
hsv = cv2.cvtColor(img, cv2.COLOR_BGR2HSV_FULL)

hsv_conv = np.copy(hsv)
while(1):
    k = cv2.waitKey(1) & 0xFF
    if k == 27:
        break

    #現在のトラックバーの値(色相)を取得
    hue = cv2.getTrackbarPos('Hue', 'ColorConversion')
    #トラックバーから取得した値以下の色相をトラックバーの値へ変換
    hsv_conv[:, :, 0] = np.where(hsv[:, :, 0]<=hue, hue, hsv[:, :, 0])

    #HSV→BGR変換
    bgr = cv2.cvtColor(hsv_conv, cv2.COLOR_HSV2BGR_FULL)

    #元画像と変換後画像の縦結合
    vcon = cv2.vconcat([img, bgr])

    #描画
    cv2.imshow('ColorConversion', vcon)

cv2.destroyAllWindows()

実行結果

・トラックバー「Hue」で値を指定することができます。
・ウィンドウ名「ColorConversion」の上部に変換前画像が表示されます。
・ウィンドウ名「ColorConversion」の下部に変換後画像が表示されます。
・「Escキー」を入力することで終了します。
以下、実行時のサンプルになります。