从 RGB 转换的 HSV 错误



我有这些列表包含RGB格式的蓝色值。

low = [
[0, 0, 128],
[65, 105, 225],
[70, 130, 180],
[72, 61, 139],
[83, 104, 120]
]

我想做的是:将所有值从例如第一个列表从RGB转换为HSV。

我编写了以下代码:

import cv2
import numpy as np
for v in low:
rgb = np.uint8([[v]])
print("RGB: ", rgb)
hsv = cv2.cvtColor(rgb, cv2.COLOR_RGB2HSV)
print("HSV: ", hsv)
print("n")

问题是当我去检查颜色(RGB-HSV(是否相同时。在这里,我发现事实并非如此。

让我们从列表中取low最后一个值。

RGB:  [[[ 83 104 120]]]
HSV:  [[[103  79 120]]]

RGB 是 RGB 输入值,HSV 是输出。但是最后一个它与RGB的颜色不同。第一个是蓝色阴影,最后一个是绿色。为什么?

我使用此工具检查值。它还说应该205, 30, 47这种RGB的正确HSV。

我的错误在哪里?

用于验证的工具具有 Hue 范围 [0,359],饱和度和值范围 [0,100]。OpenCV的HSV范围为Hue的[0,179],饱和度和值的[0,255]。

乘以 2, 1/2.55, 1/2.55,您将得到预期的值,并被轻微的整数截断错误所抵消:[103 79 120] * [2 1/2.55 1/2.55] = [206 31 47]

虽然@FBergo的答案是正确的,但我想补充一点,这些转换(乘以...(是与类型相关的,在对8UC316SC332SC332FC3等使用转换时必须小心。

相关内容

  • 没有找到相关文章

最新更新