LoginSignup
0
0

More than 1 year has passed since last update.

HSV色空間の値でグラデーションを画像を作る

Posted at

はじめに

色を表現する際、RGBではなくHSVを使って表現することがあり、その際、値の範囲をグラデーションで表現したかったので、コードを書いてみました。何かの役に立てば幸いです。

やったこと

画像のサイズ(width,height)と、HSVの範囲(lower_hsv、upper_hsv)を指定することで、その範囲をグラデーションで表現することができます。

import cv2
import numpy as np

# 画像のサイズ
width = 255
height = 255

# HSVの範囲を設定
lower_hsv = [0,0,0]
upper_hsv = [180,255,255]

# 初期化
hsv=np.zeros((height,width,3),np.uint8)

# 画像のサイズに合わせて値を分割
h_range = np.linspace(lower_hsv[0],upper_hsv[0],width)
s_range = np.linspace(lower_hsv[1],upper_hsv[1],height)
v_range = np.linspace(lower_hsv[2],upper_hsv[2],height)

# 横軸を色相(H)
for i in range(width):
    # 縦軸を彩度(S),明度(V)
    for j in range(height):
        hsv[j,i,0]=h_range[i]
        hsv[j,i,1]=s_range[j]
        hsv[j,i,2]=v_range[j]

# ファイルに出力
img=cv2.cvtColor(hsv,cv2.COLOR_HSV2BGR)
cv2.imwrite('HSV_image.jpg',img)

このまま実行した場合

image.png

彩度を固定で緑のグラデーションを作りたい場合

lower_hsv = [50,200,0]
upper_hsv = [80,200,255]

image.png

明度を固定で青のグラデーションを作りたい場合

lower_hsv = [100,0,100]
upper_hsv = [130,255,100]

image.png

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0