【发布时间】:2021-06-29 09:11:06
【问题描述】:
我正在使用 OpenCV python 将单个 HSL 值转换为 RGB 值。
由于没有 HSL2RGB 标志,所以我使用 HLS2RGB 标志。我假设 HSL 和 HLS 指的是相同的色彩空间,但只是翻转了 S 和 L 值。对吗?
所以这是我的尝试:
import cv2
hls = (0, 50, 100) # This is color Red
rgb = cv2.cvtColor( np.uint8([[hls]] ), cv2.COLOR_HLS2RGB)[0][0]
转换后rgb的值为[70,30,30]
但是,当我在在线 RGB 选择器上检查这个 RGB 值时,颜色是深棕色。
知道转换中可能出现的问题吗?谢谢
【问题讨论】:
-
不应该是
hls = (0, 128, 255)吗?uint8矩阵上升到 256,而不是 100。 -
@Thomas 啊,非常感谢,所以 HSL 值是基于百分比的,而不是绝对值?似乎 S:100 已扩展到其最大值 255(如果开始索引为 0),并且 L: ceil(50% * 255) = 128。这是检索值的正确方法吗?
-
我试过这个方法将Green HLS (120, 33%, 100%) 转换为RGB,H值是360的度数,所以120/360 * 255 = 85。L是一个百分比,所以 ceil(0.33 * 255) = 85,而 S 也是一个百分比,所以它只是 255。uint8 中的 HLS 值因此是 (85, 85, 255)。但是,从这个 HLS 转换的 RGB 是 (0,170,142),与预期的 RGB (0, 168, 0) 不同。