2011-11-21 143 views
0

可能重複:
Algorithm to convert RGB to HSV and HSV to RGB?HSV(0 .. 255)RGB(0 .. 255)

是否有人對如何使用HSV值轉換爲RGB時解釋該值是0到255?此外,

作爲參考,我想在C++中做到這一點。

+6

http://en.wikipedia.org/wiki/HSL_and_HSV哪一部分 - 轉換爲RGB你不明白?簡單地在這裏重新發佈一個算法將是沒有意義的,請告訴我們哪個部分不工作/你不明白它 –

+0

@ Ravadre,我希望有更多的「lamens術語」的東西。維基百科以不必要的更復雜的方式呈現公式而臭名昭着。 – judeclarke

+1

@ Kerrek SB,當時真的很粗魯嗎? – judeclarke

回答

2

在這裏找到 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種顏色來自情況0至5.

+0

對不起,我應該發佈我希望HSV(0..255)到RGB(0..255)和一個很好的解釋 – judeclarke

+1

輸出已經在0..255範圍內。您可以將算法轉換爲輸入範圍爲0..255,方法是將h,s,v分別除以255.但坦率地說,如果您沒有看到,則會出現更大的問題 – hirschhornsalz

+0

@ drhirsch,粗魯無禮,沒有幫助。由於代碼中沒有解釋,因此我看不到輸入是如何(0 .. 255)。例如,爲什麼這樣的情況?每個案件都做了什麼? – judeclarke

相關問題