Converti i valori HSV in RGB

Ultima revisione dei contenuti:

Scrivi tonalità, saturazione e valore, e i canali RGB compaiono mentre scrivi: hsv(217.2, 76%, 96.5%) diventa rgb(59, 130, 246). Il campo accetta gradi e percentuale di Photoshop o Figma, i tre numeri che dà OpenCV e le frazioni di Python. Scegli l’opzione del selettore Notazione HSV prima di incollare, perché se nel campo c’è già un colore il selettore lo riscrive come lo stesso colore nella nuova notazione.

Inserisci la tonalità in gradi e la saturazione e il valore in percentuale. Separa i valori con virgole o spazi.

Notazione HSV

Photoshop e Figma mostrano gradi e percentuali. OpenCV salva la tonalità da 0 a 179, e la saturazione e il valore da 0 a 255. Il modulo colorsys di Python e Unity restituiscono frazioni da 0 a 1.

in

Che cosa indicano i tre numeri HSV?

Il primo numero è la tonalità (H), un angolo sulla ruota dei colori: 0° è il rosso, 120° il verde e 240° il blu[1]. Il secondo è la saturazione (S) e il terzo il valore (V). Photoshop chiama lo stesso modello HSB, e la guida di Adobe ne indica le componenti come tonalità, saturazione e luminosità[2].


Saturazione e valore si capiscono meglio pensando ai colori da pittura. Alvy Ray Smith, che ha descritto il modello nel 1978, li paragonava all'aggiunta di bianco e di nero a una tonalità pura: meno saturazione è più bianco, meno valore è più nero[3]. Per questo qualsiasi colore con valore 0% è nero, qualunque cosa dicano gli altri due numeri, e con saturazione 0% resta un grigio di quel valore.

Cartoncini campione di colore disposti a cerchio su un tavolo chiaro
Cartoncini campione di colore disposti a cerchio, dal giallo ai verdi e ai blu e poi ai viola, ai rosa e ai rossi. La tonalità di HSV dice in quale punto di una ruota così si trova un colore, contando l'angolo dal rosso. Foto: Andy Brown, Unsplash.

Se hai il colore in un’altra notazione, per esempio OKLCH, Lab o codice Android, il convertitore colori lo mostra insieme in tutte le notazioni.

Come si converte HSV in RGB?

Calcola prima il croma, cioè la distanza tra i canali: C = V × S. Poi dividi la tonalità per 60°. La parte intera del risultato sceglie uno dei sei settori della ruota, e dal resto si ottiene il canale intermedio: X = C × (1 − |(H ÷ 60°) mod 2 − 1|). Alla fine aggiungi m = V − C a tutti i canali[1].


Prendiamo hsv(217.2, 76%, 96.5%). Il croma è 0,965 × 0,76 = 0,733. La tonalità divisa per 60° dà 3,62, quindi il colore sta nel settore tra 180° e 240°, dove il rosso vale zero, il verde è il canale intermedio e il blu è pieno. Il canale intermedio vale 0,733 × (1 − |1,62 − 1|) = 0,279, e m = 0,965 − 0,733 = 0,232.


Dopo aver aggiunto m, i canali valgono 0,232, 0,511 e 0,965. Moltiplicati per 255 e arrotondati danno rgb(59, 130, 246), che il convertitore da RGB a HEX trasforma in codice esadecimale.

Quali colori RGB si trovano sulla ruota dei colori ogni 30°?

Sono dodici tonalità con saturazione e valore pieni, cioè i colori puri sul bordo della ruota. I valori RGB e i codici HEX li ha calcolati il convertitore.
Notazione HSVValori RGBCodice HEX
hsv(0, 100%, 100%)rgb(255, 0, 0)#FF0000
hsv(30, 100%, 100%)rgb(255, 128, 0)#FF8000
hsv(60, 100%, 100%)rgb(255, 255, 0)#FFFF00
hsv(90, 100%, 100%)rgb(128, 255, 0)#80FF00
hsv(120, 100%, 100%)rgb(0, 255, 0)#00FF00
hsv(150, 100%, 100%)rgb(0, 255, 128)#00FF80
hsv(180, 100%, 100%)rgb(0, 255, 255)#00FFFF
hsv(210, 100%, 100%)rgb(0, 128, 255)#0080FF
hsv(240, 100%, 100%)rgb(0, 0, 255)#0000FF
hsv(270, 100%, 100%)rgb(128, 0, 255)#8000FF
hsv(300, 100%, 100%)rgb(255, 0, 255)#FF00FF
hsv(330, 100%, 100%)rgb(255, 0, 128)#FF0080
Con saturazione e valore pieni un canale vale sempre 255 e un altro 0. Se abbassi il valore al 50%, i canali diversi da zero si dimezzano più o meno: hsv(0, 100%, 50%) è rgb(128, 0, 0).

Quali colori RGB danno le variabili hsb() di Bootstrap Italia?

Bootstrap Italia, il kit di Designers Italia per i siti della pubblica amministrazione, definisce il colore primario con la funzione Sass hsb(210, 100, 80) e ne ricava le varianti cambiando saturazione e luminosità[4]. La tabella riporta i valori hsb() del file e il risultato che per ciascuno dà questo convertitore.
Variabile e valore hsb()Valori RGBCodice HEX
$primary-a12: 210, 100, 20rgb(0, 26, 51)#001A33
$primary-a11: 210, 100, 30rgb(0, 38, 77)#00264D
$primary-a10: 210, 100, 40rgb(0, 51, 102)#003366
$primary-a9: 210, 100, 50rgb(0, 64, 128)#004080
$primary-a8: 210, 100, 60rgb(0, 77, 153)#004D99
$primary-a7: 210, 100, 70rgb(0, 89, 179)#0059B3
$primary: 210, 100, 80rgb(0, 102, 204)#0066CC
$primary-a5: 210, 85, 84rgb(32, 123, 214)#207BD6
$primary-a4: 210, 70, 88rgb(67, 146, 224)#4392E0
$primary-a3: 210, 55, 92rgb(106, 170, 235)#6AAAEB
$primary-a2: 211, 40, 96rgb(147, 194, 245)#93C2F5
$primary-a1: 210, 25, 99rgb(189, 221, 252)#BDDDFC
Le varianti scure, da a12 ad a7, hanno la saturazione piena e scendono solo di luminosità, a passi di 10. Quelle chiare, da a5 ad a1, perdono saturazione e guadagnano luminosità insieme, cioè ricevono sempre più bianco.

I numeri interi di Figma danno esattamente lo stesso colore?

Non sempre. Figma scrive HSB con numeri interi[5], e una tonalità, una saturazione o un valore arrotondati possono spostare un canale RGB di un'unità. La tabella confronta i risultati del convertitore per lo stesso colore scritto in modo esatto e arrotondato.
Notazione HSVValori RGBCodice HEX
hsv(217.2, 76%, 96.5%)rgb(59, 130, 246)#3B82F6
hsv(217, 76%, 96%)rgb(59, 130, 245)#3B82F5
hsv(217, 76%, 97%)rgb(59, 131, 247)#3B83F7
hsv(142.1, 82.7%, 77.3%)rgb(34, 197, 94)#22C55E
hsv(142, 83%, 77%)rgb(33, 196, 93)#21C45D
Abbiamo verificato tutti i 16 777 216 colori RGB: con HSV arrotondato a numeri interi, oltre 14,7 milioni tornano come un altro colore, mentre con un decimale tornano tutti identici. Per questo il convertitore da RGB a HSV dà il risultato con un decimale.

Come si scrive un colore HSV in CSS?

CSS non ha la funzione hsv(), ma ha hwb(), in cui la tonalità è seguita dalla quantità di bianco e di nero mescolata al colore[6]. Il modello HWB l'ha descritto Alvy Ray Smith nel 1996, e si ricava da HSV con due formule brevi: W = (1 − S) × V e B = 1 − V[7].


Per hsv(217.2, 76%, 96.5%) il bianco vale (1 − 0,76) × 0,965 = 23,1% e il nero 1 − 0,965 = 3,5%, quindi nel foglio di stile scrivi hwb(217.2 23.1% 3.5%). Il browser mostra lo stesso colore di rgb(59, 130, 246). Se preferisci una notazione che capisca qualsiasi strumento, incolla semplicemente il risultato di questo convertitore.

Perché una terna di OpenCV torna come un colore un po' diverso?

OpenCV salva la tonalità di un'immagine a 8 bit come metà dell'angolo, per farla stare in un byte[8]. Due valori di tonalità vicini distano quindi 2°, e un colore che cade in mezzo non ha una corrispondenza esatta. La terna 109, 194, 246 che OpenCV dà per rgb(59, 130, 246) torna con l'opzione OpenCV come rgb(59, 127, 246), con il verde più basso di tre unità. OpenCV restituisce esattamente lo stesso: abbiamo confrontato l'opzione OpenCV con OpenCV.js 4.10 su tutte le terne con tonalità da 0 a 180.


Se il risultato deve tornare in un'immagine caricata con cv2.imread, usa cv2.COLOR_HSV2BGR, perché quell'immagine tiene i canali nell'ordine blu, verde, rosso[9].

Quali formati HSV accetta questo convertitore?

Il campo accetta e converte ciascuno di questi formati, quindi non devi correggere nulla prima di incollare. La tabella mostra che cosa fa il convertitore con ognuno, e i risultati li ha calcolati lui stesso con l'opzione 0–360°, 0–100%, salvo quando la nota dice altro.
Cosa scriviCosa mostra il convertitoreCome lo leggiamo
hsv(217.2, 76%, 96.5%)rgb(59, 130, 246)Prendiamo così com'è la notazione con le parentesi, la stessa che dà il convertitore da RGB a HSV.
hsb(210, 100, 80)rgb(0, 102, 204)Leggiamo il nome HSB come HSV e prendiamo saturazione e luminosità senza segno di percentuale, come nelle variabili di Bootstrap Italia.
H 217,2 S 76 B 96,5rgb(59, 130, 246)Togliamo le lettere delle caselle del Selettore colore di Photoshop e leggiamo la virgola tra le cifre come decimale.
217,2 76 96,5rgb(59, 130, 246)Bastano tre numeri senza simboli, anche con la virgola decimale come si scrive in italiano.
0,6034 0,7602 0,9647rgb(59, 130, 246)Riconosciamo tre frazioni non maggiori di 1 come notazione di Python e le leggiamo come con l'opzione 0–1.
hsva(217.2, 76%, 96.5%, 0.5)rgba(59, 130, 246, 0.5)Prendiamo il quarto numero come opacità e lo riportiamo nel risultato come rgba.
[109 194 246]rgb(59, 127, 246)Leggiamo con l'opzione OpenCV un array NumPy stampato da Python, parentesi quadre comprese.
-120, 100%, 100%rgb(0, 0, 255)Facciamo girare una tonalità negativa sulla ruota come fa CSS, quindi −120° equivale a 240°.
hsv(217.2, 76%, 96.5%rgb(59, 130, 246)La parentesi di chiusura mancante è un errore di battitura, quindi leggiamo lo stesso i numeri.

Converti altre unità in RGB

Fonti

  1. HSL and HSV — Wikipedia (in inglese)
  2. Scegliere i colori in Adobe Photoshop — Adobe
  3. Color Gamut Transform Pairs (SIGGRAPH 78) — Alvy Ray Smith
  4. Bootstrap Italia — _variables.scss — Designers Italia
  5. About color models — Figma Help Center
  6. CSS Color Module Level 4 — HWB Colors: hwb() function — W3C
  7. HWB — A More Intuitive Hue-Based Color Model — Alvy Ray Smith
  8. Color conversions: RGB ↔ HSV — OpenCV
  9. Image file reading and writing: imread — OpenCV
  10. colorsys — Conversions between color systems — Python Software Foundation

Tutti i valori delle tabelle sono stati calcolati dalle definizioni delle unità e verificati con il calcolo prima della pubblicazione. I dati storici e i nomi delle unità locali si basano sulle fonti elencate sopra.

Ultima revisione dei contenuti: · scritto e verificato dal team Arteon

Domande frequenti sulla conversione da HSV a RGB

Perché il convertitore non accetta una saturazione di 194?

Con l'opzione 0–360°, 0–100% saturazione e valore arrivano al massimo a 100. Un numero più grande senza segno di percentuale di solito viene dalla scala da 0 a 255 di OpenCV, quindi invece di tagliarlo in silenzio al 100% il convertitore mostra un avviso. Passa allora la Notazione HSV a OpenCV (0–179, 0–255).

Nella notazione 0–1 anche la tonalità è una frazione?

Sì. Il modulo colorsys di Python dà tutti e tre i numeri da 0 a 1[10], quindi la tonalità è una frazione del giro completo. 0,6034 × 360° dà 217,2°.

Come passo da HSV a codice HEX?

Converti qui il valore e incolla il risultato nel convertitore da RGB a HEX. Il colore lo vedi subito nel campione quadrato accanto al campo, e un clic sul campione apre il selettore di colore del sistema.

Come passo da RGB a HSV?

Inserisci i canali nel convertitore da RGB a HSV. Il pulsante Inverti ordine ti porta lì con il risultato attuale.

Screenshot dello strumento gratuito Arteon: Converti i valori HSV in RGB

Aiutaci a migliorare i nostri strumenti

Hai un’idea per una nuova funzione, hai trovato un errore o vuoi proporre un altro strumento? Scrivici.