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キー」を入力することで終了します。
以下、実行時のサンプルになります。