RGB的HSV转换错误

Lin*_*ink 1 python rgb opencv

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

low = [
    [0, 0, 128],
    [65, 105, 225],
    [70, 130, 180],
    [72, 61, 139],
    [83, 104, 120]
]
Run Code Online (Sandbox Code Playgroud)

我想要做的是:将所有值从例如第一个列表从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")
Run Code Online (Sandbox Code Playgroud)

问题是当我去检查颜色(RGB-HSV)是否相同时.在这里,我发现它不是.

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

RGB:  [[[ 83 104 120]]]
HSV:  [[[103  79 120]]]
Run Code Online (Sandbox Code Playgroud)

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

我用这个工具来检查值.它还说这个RGB的正确HSV应该是205, 30, 47.

我的错误在哪里?

FBe*_*rgo 6

用于验证的工具的Hue范围为[0,359],饱和度和值的范围为[0,100].对于Hue,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]