使用 colorsys 将 RGB 转换为 HSV

问题描述 投票:0回答:1

我正在尝试制作一个跟踪程序,该程序拍摄图像并显示具有指定颜色的对象所在的位置:

示例:https://i.stack.imgur.com/u202H.jpg

为此,我现在使用 RGB,但使用它确实很难,所以我想将其转换为色调,以便更容易使用。我正在尝试使用 colorsys,但经过一些研究后,我不知道它想要什么参数以及它提供什么。我尝试使用 colorizer.org 进行匹配,但我得到了一些废话。

>>> import colorsys
>>> colorsys.rgb_to_hsv(45,201,18)
(0.3087431693989071, 0.9104477611940298, 201)

alredy colorsys 的行为并不像记录的那样,因为在 https://docs.python.org/2/library/colorsys.html 它说输出始终是 0 和 1 之间的浮点数,但值为 201。这也是不可能的,因为在标准 HSV 中,该值介于 0 到 100 之间。

我的问题是: colorsys 期望输入什么? 如何将输出转换为标准 HSV? (色相 = 0-360,饱和度 = 0-100,明度 = 0-100)

python rgb hsv
1个回答
4
投票

所有这些颜色空间中的坐标都是浮点值。在YIQ空间中,Y坐标在0和1之间,但I和Q坐标可以是正值或负值。在所有其他空间中,坐标都在 0 和 1 之间。

https://docs.python.org/3/library/colorsys.html

您必须从 [0, 255] 缩放到 [0, 1],或者将 RGB 值除以 255。如果使用 python 2,请确保不要进行楼层除法。

这里是一个示例代码,灵感来自 Pillow 的

getcolor

from colorsys import rgb_to_hsv

def to_hsv(r, g, b):
  h, s, v = rgb_to_hsv(r / 255, g / 255, b / 255)
  return int(h * 255), int(s * 255), int(v * 255)
© www.soinside.com 2019 - 2024. All rights reserved.