首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从RGB转换HSV错误

从RGB转换HSV错误
EN

Stack Overflow用户
提问于 2018-05-21 13:06:28
回答 2查看 1.6K关注 0票数 1

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

代码语言:javascript
复制
low = [
    [0, 0, 128],
    [65, 105, 225],
    [70, 130, 180],
    [72, 61, 139],
    [83, 104, 120]
]

我想要做的是:将所有的值从RGB转换为HSV。

我做了这个代码:

代码语言:javascript
复制
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列表中获取最后一个值。

代码语言:javascript
复制
RGB:  [[[ 83 104 120]]]
HSV:  [[[103  79 120]]]

RGB是RGB输入值,HSV是输出。但这最后一个,它不是相同的颜色RGB。首先是蓝色,最后是绿色。为什么?

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

我的错误在哪里?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-05-21 14:05:52

用于验证的工具的范围为:色调为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

票数 9
EN

Stack Overflow用户

发布于 2018-05-22 09:00:54

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

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50449602

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档