繁体   English   中英

RGB的HSV转换错误

[英]Wrong HSV conversion from RGB

我有这些列表包含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颜色不同。 首先是蓝色阴影,最后是绿色。 为什么?

我使用此工具检查值。 它还表示该RGB的正确HSV应该是205, 30, 47

我的错误在哪里?

用于验证的工具的色相范围为[0,359],饱和度和值的范围为[0,100]。 OpenCV的HSV范围对于色相为[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等。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM