结论:颜色编辑中的色调、饱和度和亮度,是与HSL颜色空间保持一致。
如下图所示,他有色调、饱和度和亮度,其数值范围均为[0,240]。
首先我使用HSV进行模拟,发现效果和数值对不上。
因此改换HSL进行模拟,其数值如下所示;
hsv:73,102,88, rgb:67,133,53
import os
import numpy as np
import cv2
import colorsys
def rgb_to_hsl(rgb):
r, g, b = rgb[0] / 255.0, rgb[1] / 255.0, rgb[2] / 255.0
h, l, s = colorsys.rgb_to_hls(r, g, b)
return (h * 255, s * 255, l * 255)
def hsl_to_rgb(hsl):
h, s, l = hsl[0] / 240, hsl[1] / 240.0, hsl[2] / 240.0
r, g, b = colorsys.hls_to_rgb(h, l, s)
return (int(r * 255), int(g * 255), int(b * 255))
def rgb_show(arg):
ori_h = cv2.getTrackbarPos('ori_h', 'opencv')
ori_s = cv2.getTrackbarPos('ori_s', 'opencv')
ori_l = cv2.getTrackbarPos('ori_l', 'opencv')
r,g,b = hsl_to_rgb((ori_h, ori_s, ori_l))
ori[:,:,0] = b
ori[:,:,1] = g
ori[:,:,2] = r
print(f"hsv:{ori_h},{ori_s},{ori_l}, rgb:{r},{g},{b}")
cv2.imshow('opencv', ori)
ori = np.zeros((500, 1000, 3), dtype=np.uint8)
cv2.namedWindow('opencv')
cv2.createTrackbar('ori_h', 'opencv', 0, 240, rgb_show)
cv2.createTrackbar('ori_s', 'opencv', 0, 240, rgb_show)
cv2.createTrackbar('ori_l', 'opencv', 0, 240, rgb_show)
rgb_show(0)
cv2.waitKey(0)