HSV (0 .. 255) 到 RGB (0 .. 255) [重复]
Posted
技术标签:
【中文标题】HSV (0 .. 255) 到 RGB (0 .. 255) [重复]【英文标题】:HSV (0 .. 255) to RGB (0 .. 255) [duplicate] 【发布时间】:2011-11-21 08:09:47 【问题描述】:可能重复:Algorithm to convert RGB to HSV and HSV to RGB?
当值是 0 到 255 时,有人可以解释如何将 HSV 值转换为 RGB 吗?还有,
作为参考,我正在尝试在 C++ 中执行此操作。
【问题讨论】:
en.wikipedia.org/wiki/HSL_and_HSV 的哪一部分 - 转换为 RGB 你不明白?在这里简单地转发一个算法是没有意义的,请告诉我们哪个部分不起作用/你不明白它 @Ravadre,我希望能有更多“笨拙的术语”。***以过于复杂的方式呈现公式而臭名昭著。 @Kerrek SB,粗鲁真的有必要吗? @失谐,实际上,它不是。这些通常是 (0 ... 1) 到 (0 .. 255) 等 @judeclarke:所以,缩放它:如果你有 (0 ... 255),只需将你的值除以 255,然后它们将在 (0 ... 1),那么你重新使用这些算法就好了! 【参考方案1】:在这里找到 http://mjijackson.com/2008/02/rgb-to-hsl-and-rgb-to-hsv-color-model-conversion-algorithms-in-javascript
function hsvToRgb(h, s, v)
var r, g, b;
var i = Math.floor(h * 6);
var f = h * 6 - i;
var p = v * (1 - s);
var q = v * (1 - f * s);
var t = v * (1 - (1 - f) * s);
switch(i % 6)
case 0: r = v, g = t, b = p; break;
case 1: r = q, g = v, b = p; break;
case 2: r = p, g = v, b = t; break;
case 3: r = p, g = q, b = v; break;
case 4: r = t, g = p, b = v; break;
case 5: r = v, g = p, b = q; break;
return [r * 255, g * 255, b * 255];
编辑:
我曾经写过一个颜色选择器,并且习惯于理解所有这些。那时,我查看了 Photoshop 颜色选择器,尝试在十字准线周围移动,观察 hsv/rgb 数字的变化并弄清楚它们是如何工作的。在这种情况下,i
似乎定位主要颜色,色调,指向它。色调的值实际上是循环中颜色完全饱和的程度,以红色开始,以红色结束。有一个三角形,每个点代表 R、G 和 B,其中 0 度是 R。在 R 和 G 之间是黄色,在 R 和 B 之间是洋红色,在 B 和 G 之间是青色。我们总共有 6 种颜色。这 6 种颜色是从 case 0 到 case 5。
【讨论】:
对不起,我应该发布我希望 HSV (0 .. 255) 到 RGB (0 .. 255) 并对其进行很好的解释 输出已经在 0..255 范围内。您可以通过将 h,s,v 每个除以 255 将算法转换为 0..255 的输入范围。但坦率地说,如果您没有看到,那么您有一个更大的问题 @ drhirsch,粗鲁是没有帮助的。我看不到输入是如何(0 .. 255),因为代码中没有解释。例如,为什么会出现这样的情况?每个案例的作用是什么? 如果你看过上面提到的***文章,你就会认出这六个案例。不要告诉我我应该用外行的方式向你解释这篇文章,因为你不想读它——我会认为这很粗鲁 @drhirsch 维基没有解释每个案例以上是关于HSV (0 .. 255) 到 RGB (0 .. 255) [重复]的主要内容,如果未能解决你的问题,请参考以下文章
在RGB到HSV的转换中,V=max(R,G,B),V不是RGB中的最大值吗?范围应该是在0~255之间,怎么会在0~1之间?