import cv2
# Hueをdh増やした画像を返す関数
def increase_hue(image, dh):
hsvimage = cv2.cvtColor(image, cv2.COLOR_BGR2HSV)
hsvimage[:, :, 0] = (hsvimage[:, :, 0] + dh) % 180
return cv2.cvtColor(hsvimage, cv2.COLOR_HSV2BGR)
# 画像の読み込み
image = cv2.imread('source.jpg')
# Hueを30, 60, 90, 120, 150増やした画像を生成
for dh in range(30, 180, 30):
result = increase_hue(image, dh)
cv2.imwrite('1_' + str(dh) + '.jpg', result)
元画像

1_30

1_60

1_90

1_120

1_150

import cv2
import numpy as np
# Saturationをds変えた画像を返す関数
def change_saturation(image, ds):
hsvimage = cv2.cvtColor(image, cv2.COLOR_BGR2HSV)
# float32型に変換
hsvf = hsvimage.astype(np.float32)
# 変換
hsvf[:, :, 1] = np.clip(hsvf[:, :, 1] + ds, 0, 255)
# uint8型に戻す
hsvimage = hsvf.astype(np.uint8)
return cv2.cvtColor(hsvimage, cv2.COLOR_HSV2BGR)
# 画像の読み込み
image = cv2.imread('source.jpg')
# Saturationを100増やした画像を作成
image_100 = change_saturation(image, 100)
# Saturationを100減らした画像を作成
image_100_ = change_saturation(image, -100)
# 画像を保存
cv2.imwrite('2_100.jpg', image_100)
cv2.imwrite('2_-100.jpg', image_100_)
import cv2
import numpy as np
# Valueをdv変えた画像を返す関数
def change_value(image, dv):
hsvimage = cv2.cvtColor(image, cv2.COLOR_BGR2HSV)
# float32型に変換
hsvf = hsvimage.astype(np.float32)
# 変換
hsvf[:, :, 2] = np.clip(hsvf[:, :, 2] + dv, 0, 255)
# uint8型に戻す
hsvimage = hsvf.astype(np.uint8)
return cv2.cvtColor(hsvimage, cv2.COLOR_HSV2BGR)
# 画像の読み込み
image = cv2.imread('source.jpg')
# Valueを100増やした画像を作成
image1 = change_value(image, 100)
# Valueを100減らした画像を作成
image2 = change_value(image, -100)
# 画像を保存
cv2.imwrite('3_100.jpg', image1)
cv2.imwrite('3_-100.jpg', image2)