Vitajte na [www.pocitac.win] Pripojiť k domovskej stránke Obľúbené stránky

Domáce Hardware Siete Programovanie Softvér Otázka Systémy

Ako môžem previesť odtieň na RGB?

Dobre, rozoberme, ako premeniť odtieň (časť modelov HSL alebo HSV) na RGB (červená, zelená, modrá). Zahŕňa to určitú matematiku, ale prezentujem ju jasným a praktickým spôsobom.

Pochopenie konceptov

* odtieň (h): Predstavuje dominantnú farbu ako uhol na farebnom kolieskach (0-360 stupňov). 0 je červená, 120 je zelená, 240 je modrá a tak ďalej.

* saturácia: Predstavuje množstvo farby. 0% je šedá (bez farby), 100% je úplne nasýtená.

* Hodnota/jas (v) alebo ľahkosť (l): Predstavuje intenzitu farby. Hodnota je od 0 do 1 (alebo 0% do 100%), kde 0 je čierna a 1 je plný jas. Ľahkosť prechádza od 0 do 1 (alebo 0% do 100%), kde 0 je čierna, 0,5 je čistá farba a 1 je biela.

* rgb (červená, zelená, modrá): Predstavuje farbu ako kombináciu červených, zelených a modrých komponentov. Každá zložka sa zvyčajne pohybuje od 0 do 255 (alebo 0,0 až 1,0 v normalizovanej forme).

Algoritmus (HSB/HSV až RGB)

Tu je všeobecný proces. Použijem spoločný zápis:

* `H`:Hue (0-360 stupňov)

* `S`:saturácia (0,0-1,0)

* `V`:Hodnota (0,0-1.0)

* `R`,` G`, `B`:červená, zelená, modrá (0,0-1,0)

`` `Python

def hsv_to_rgb (h, s, v):

"" "

Prevedie hodnotu farby HSV na RGB.

ARG:

H:odtieň (0-360 stupňov)

S:saturácia (0,0-1,0)

V:Hodnota (0,0-1,0)

Návraty:

Tuple (R, G, B) predstavujúce farbu RGB (hodnoty medzi 0,0 a 1,0).

"" "

Ak s ==0,0:

# Achromatic (šedá)

návrat (v, v, v)

H =H % 360,0 # Zaistite, aby bol odtieň v rozsahu [0, 360)

h /=60,0 # sektor 0 až 5

i =int (h)

f =h - i # frakčná časť h

p =v * (1 - s)

q =v * (1 - s * f)

t =v * (1 - s * (1 - f))

Ak i ==0:

r, g, b =v, t, p

Elif I ==1:

r, g, b =q, v, p

Elif I ==2:

r, g, b =p, v, t

Elif I ==3:

r, g, b =p, q, v

Elif I ==4:

r, g, b =t, p, v

inak:# i ==5

r, g, b =v, p, q

návrat (r, g, b)

`` `

Vysvetlenie:

1. rukoväť Grayscale: Ak je saturácia 0, je to odtieň šedej. Všetky hodnoty RGB sa rovnajú hodnote (jas).

2. Normalizujte odtieň:

* Uistite sa, že odtieň je v rozmedzí 0-360 stupňov pomocou operátora modulu (`%"). Zvládne prípady, keď by odtieň mohol byť v dôsledku výpočtov mierne mimo rozsahu.

* Rozdeľte odtieň 60. Toto rozdeľuje farebné koleso do šiestich sektorov, z ktorých každé 60 stupňov široké. „H` teraz predstavuje pozíciu v sektore (0 až 5).

3. Vypočítajte stredne pokročilé hodnoty:

* `i =int (h)`:Celočučná časť `h` určuje tento sektor.

* `f =H - I`:Frakčná časť` H` je pozícia v tomto sektore (0 až 1).

* `p =v * (1 - s)`:Táto hodnota sa používa, keď je farebná zložka najnižšia v súčasnom sektore.

* `q =v * (1 - s * f)`:Táto hodnota sa používa, keď sa v súčasnom sektore zvyšuje farebná zložka.

* `t =v * (1 - s * (1 - f))`:Táto hodnota sa používa, keď farebná zložka klesá v súčasnom sektore.

4. Určte RGB na základe sektora: Séria výkazov „if/elif/else` vyberie správne hodnoty RGB na základe toho, na základe ktorých odvetvie patrí. Premenné `r`,` g` a `b` sú priradené na základe` v`, `p`,` q` a `t`.

Príklad použitia (python):

`` `Python

Príklad:Prevod odtieňa 120, saturácia 1,0, hodnota 0,75 na RGB

h =120,0 # zelená

S =1,0

V =0,75

r, g, b =hsv_to_rgb (h, s, v)

print (f "hsv ({h}, {s}, {v}) -> rgb ({r}, {g}, {b})")

#Convert do rozsahu 0-255

r_255 =int (r * 255)

g_255 =int (g * 255)

B_255 =int (b * 255)

Print (f "rgb (0-255):({r_255}, {g_255}, {b_255})")

`` `

HSL až RGB

Konverzia HSL až RGB je mierne odlišná, predovšetkým v tom, ako sa rieši komponent ľahkosti. Tu je kód Python:

`` `Python

def hsl_to_rgb (h, s, l):

"" "Prevádza HSL na RGB.

ARG:

H:odtieň (0-360 stupňov)

S:saturácia (0,0-1,0)

L:Ľahkosť (0,0-1,0)

Návraty:

Tuple (R, G, B) predstavujúce farbu RGB (hodnoty medzi 0,0 a 1,0).

"" "

Ak s ==0,0:

r =g =b =l # achromatické

inak:

H =H % 360,0

H /=60,0

a =l * (1 - abs (2 * l - 1) * s)

x =a * (1 - abs (h % 2 - 1))

m =l - a / 2

Ak 0 <=h <1:

r, g, b =a, x, 0

Elif 1 <=H <2:

r, g, b =x, a, 0

Elif 2 <=H <3:

r, g, b =0, a, x

Elif 3 <=H <4:

r, g, b =0, x, a

Elif 4 <=H <5:

r, g, b =x, 0, a

Elif 5 <=H <6:

r, g, b =a, 0, x

inak:

r =g =b =0 # by sa nemalo stať, ale len pre prípad

r +=m

g +=m

B +=m

návrat r, g, b

`` `

Kľúčové rozdiely v konverzii HSL:

* ľahkosť a chroma: HSL používa ľahkosť, ktorá predstavuje vnímaný jas. Výpočet zahŕňa nájdenie * chroma * (miera intenzity farby) a potom upravenie hodnôt RGB na základe odtieňa a chroma.

* stredná šedá: V HSL je L =0,5 „čistá“ farba pri maximálnej saturácii. L =0 je čierna a l =1 je biela. V HSV je V =1 najjasnejšia farba môže byť.

* zložitejšia matematika: Výpočty v HSL sa vo všeobecnosti zapoja viac z dôvodu koncepcie ľahkosti.

Dôležité úvahy:

* normalizácia: Pred použitím funkcií sa uistite, že vaše hodnoty H, S a V/L sú v očakávaných rozsahoch (0-360 pre H, 0-1 pre S a V/L). Príklady, ktoré sa uvádza, sa používajú medzi 0 a 1, ale je dôležité skontrolovať, či je to správny rozsah pre váš prípad použitia.

* celé číslo vs. s pohyblivou úrovňou: Príklady kódu vracajú hodnoty RGB ako čísla s pohyblivou rádovou čiarkou medzi 0,0 a 1,0. Ak potrebujete celočíselné hodnoty (0-255), vynásobte každú komponent 255 a odovzdajte celé číslo:`r_int =int (r * 255)`

* Knižnice: Mnoho programovacích jazykov má vstavané knižnice konverzie farieb, ktoré dokážu tieto konverzie zvládnuť efektívnejšie a potenciálne s lepšou presnosťou. Napríklad v Pythone môžete použiť modul `Colorsys`. V JavaScripte môžete použiť farebnú knižnicu ako `chroma.js`.

* Farebné profily: Ak pracujete s farebne kritickými aplikáciami (napr. Profesionálna grafika), uvedomte si farebné profily (napríklad SRGB alebo Adobe RGB). Konverzie medzi farebnými priestormi môžu ovplyvniť vzhľad farieb.

* Pochopenie farebných modelov: Je nevyhnutné pochopiť rozdiely medzi HSV a HSL. HSV je pre niektorých intuitívnejší, zatiaľ čo HSL sa často považuje za vnímavejšie rovnomernejšie (čo znamená, že rovnaké zmeny v L vedú k konzistentnejším zmenám v vnímanom jasu).

Pochopením algoritmov a použitím príkladov poskytnutých kódov môžete vo svojich programoch prevádzať Hue na RGB (HSV na RGB alebo HSL na RGB). Nezabudnite zvážiť konkrétne rozsahy vašich hodnôt H, S a V/L a podľa toho upraviť kód. Ak máte nejaké konkrétne problémy alebo chcete prispôsobiť to inému programovaciemu jazyku, dajte mi vedieť!

Najnovšie články

Copyright © počítačové znalosti Všetky práva vyhradené