python - OpenCV 将 HSL 转换为 RGB
问题描述
我正在使用 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 值时,颜色是深棕色。
知道转换中哪里可能出错吗?谢谢
解决方案
OpenCV 中的 HLS 范围是
H -> 0 - 180
L -> 0 - 255
S -> 0 - 255
因此,如果您使用的 HLS 范围是
H -> 0 - 360
L -> 0 - 100
S -> 0 - 100
您必须先将其转换为 OpenCV 的范围
hls = (0, 50, 100)
hls_conv = (hls[0]/2, hls[1]*2.55, hls[2]*2.55)
rgb = cv2.cvtColor(np.uint8([[hls_conv]]), cv2.COLOR_HLS2RGB)[0][0]
这将导致 rgb 为 [254, 0, 0]
推荐阅读
- javascript - Webaudio - 记录和下载 webaudio audioNode 的输出
- python - 在 Ubuntu 上找到 Python,但在命令提示符上找不到
- kubernetes - 如何在 Kubernetes 中实现带有粘性会话的 Canary 发布?
- javascript - 获取被拖动对象下的 even.target
- flutter - Flutter:在日历上创建多个事件
- c++ - Win API 链接器错误未定义对 WinMain 的引用
- python - 如何从 C# 的 python 脚本中获取 .dll 文件?
- java - 如何使用java将文本插入文件中的特定行?
- php - 使用 Laravel 社交名流的社交身份验证失败
- firebase - 在使用颤振将值保存到firebase之前设置值的约束