Python OpenCVで一定以下の色相値を統一する(ソースコードとサンプル画像有)

2023年3月26日

実行環境

Python:3.9.7
OpenCV:4.5.3

ソースコードに関して

HSV変換後の画像で一定以下の色相を同じ値を統一するものです
import cv2
import numpy as np

#画像の読み込み 第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)
#色相127未満を色相127へ変換
hsv_conv[:, :, 0] = np.where(hsv[:, :, 0]<127,127,hsv[:, :, 0])

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

#変換前の画像を描画
cv2.imshow('Base',img)
#変換後の画像を描画
cv2.imshow('Change',bgr)

cv2.waitKey(0)
cv2.destroyAllWindows()

実行結果

・ウィンドウ名「Base」に変換前の画像が表示されます。
・ウィンドウ名「Change」に変換後の画像が表示されます。
・任意のキーを入力することで終了します。
変換前画像
変換後画像

補足

HSVの配列構造に関して、以下で解説しています。
もし、よろしければ一読お願いします。
OpenCVでHSV変換した際のhsv[:,:,0]~hsv[:,:,2](色空間)に関して