Convierte valores HSV a RGB

Última revisión del contenido:

Escribe el tono, la saturación y el valor, y los canales RGB aparecen mientras escribes: hsv(217.2, 76%, 96.5%) es rgb(59, 130, 246). El campo acepta grados y porcentaje de Photoshop o Figma, los tres números que da OpenCV y fracciones de Python. Elige la opción del selector Notación HSV antes de pegar, porque si el campo ya tiene un color, el selector lo reescribe como el mismo color en la nueva notación.

Escribe el tono en grados y la saturación y el valor en porcentaje. Separa los valores con comas o espacios.

Notación HSV

Photoshop y Figma muestran grados y porcentajes. OpenCV guarda el tono del 0 al 179, y la saturación y el valor del 0 al 255. colorsys de Python y Unity devuelven fracciones del 0 al 1.

a

¿Qué significan los tres números de HSV?

El primer número es el tono o matiz (H), un ángulo en la rueda de color: 0° es rojo, 120° verde y 240° azul[1]. El segundo es la saturación (S) y el tercero el valor (V). Photoshop llama HSB a este mismo modelo, y la ayuda de Adobe llama a sus componentes tono, saturación y brillo[2].


La saturación y el valor se entienden mejor pensando en pintura. Alvy Ray Smith, que describió el modelo en 1978, los comparó con añadir blanco y negro a un tono puro: menos saturación es más blanco, y menos valor es más negro[3]. Por eso cualquier color con un valor del 0% es negro, digan lo que digan los otros dos números, y con una saturación del 0% queda un gris de ese valor.

Tarjetas de muestras de color dispuestas en círculo sobre una mesa clara
Tarjetas de muestras de color colocadas en círculo, del amarillo a los verdes y azules y de ahí a los violetas, rosas y rojos. El tono de HSV indica en qué punto de una rueda así está un color, contando el ángulo desde el rojo. Foto: Andy Brown, Unsplash.

Si tienes el color en otro formato, como OKLCH, Lab o código de Android, el convertidor de colores lo muestra a la vez en todos los formatos.

¿Cómo se convierte HSV a RGB?

Primero calcula el croma, es decir, la separación entre los canales: C = V × S. Luego divide el tono entre 60°. La parte entera del resultado elige uno de los seis sectores de la rueda, y con el resto se obtiene el canal intermedio: X = C × (1 − |(H ÷ 60°) mod 2 − 1|). Al final sumas m = V − C a todos los canales[4].


Tomemos hsv(217.2, 76%, 96.5%). El croma es 0,965 × 0,76 = 0,733. El tono entre 60° da 3,62, así que el color está en el sector entre 180° y 240°, donde el rojo vale cero, el verde es el canal intermedio y el azul está lleno. El canal intermedio es 0,733 × (1 − |1,62 − 1|) = 0,279, y m = 0,965 − 0,733 = 0,232.


Tras sumar m, los canales valen 0,232, 0,511 y 0,965. Multiplicados por 255 y redondeados dan rgb(59, 130, 246), y el convertidor de RGB a HEX lo pasa a código hexadecimal.

¿Qué colores RGB hay en la rueda de color cada 30°?

Son doce tonos con saturación y valor completos, es decir, los colores puros del borde de la rueda. El convertidor calculó los valores RGB y los códigos HEX.
Notación HSVValores RGBCódigo 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 saturación y valor completos, un canal siempre vale 255 y otro 0. Si bajas el valor al 50%, los canales que no son cero se reducen más o menos a la mitad: hsv(0, 100%, 50%) es rgb(128, 0, 0).

¿Los números enteros de Figma dan exactamente el mismo color?

No siempre. Figma escribe HSB con números enteros[5], y un tono, una saturación o un valor redondeados pueden mover un canal RGB un paso. La tabla compara los resultados del convertidor para el mismo color escrito con exactitud y redondeado.
Notación HSVValores RGBCódigo 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
Lo comprobamos en los 16 777 216 colores RGB: con HSV redondeado a enteros, más de 14,7 millones de ellos vuelven como otro color, y con un decimal vuelven todos sin cambios. Por eso el convertidor de RGB a HSV da su resultado con un decimal.

¿Cómo se escribe un color HSV en CSS?

CSS no tiene la función hsv(), pero sí hwb(), en la que después del tono indicas cuánto blanco y cuánto negro se mezclan con él[6]. El modelo HWB lo describió Alvy Ray Smith en 1996, y sale de HSV con dos fórmulas cortas: W = (1 − S) × V y B = 1 − V[7].


Para hsv(217.2, 76%, 96.5%) el blanco es (1 − 0,76) × 0,965 = 23,1% y el negro 1 − 0,965 = 3,5%, así que en la hoja de estilos escribes hwb(217.2 23.1% 3.5%). El navegador muestra el mismo color que rgb(59, 130, 246). Si prefieres una notación que entienda cualquier herramienta, pega el resultado de este convertidor.

¿Por qué un trío de OpenCV vuelve como un color algo distinto?

OpenCV guarda el tono de una imagen de 8 bits como la mitad del ángulo, para que quepa en un byte[8]. Los valores de tono vecinos están separados 2°, y un color que cae entre ellos no tiene equivalente exacto. El trío 109, 194, 246 que da OpenCV para rgb(59, 130, 246) vuelve con la opción OpenCV como rgb(59, 127, 246), con el verde tres pasos más bajo. OpenCV devuelve exactamente lo mismo: comparamos la opción OpenCV con OpenCV.js 4.10 en todos los tríos con tono de 0 a 180.


Si el resultado vuelve a una imagen cargada con cv2.imread, usa cv2.COLOR_HSV2BGR, porque esa imagen guarda los canales en orden azul, verde, rojo[9].

¿Qué formatos HSV acepta este convertidor?

El campo acepta y convierte cada uno de estos formatos, así que no tienes que corregir nada antes de pegar. La tabla muestra qué hace el convertidor con cada uno, y los resultados los calculó él mismo con la opción 0–360°, 0–100%, salvo que la nota diga otra cosa.
Lo que escribesLo que muestra el convertidorCómo lo leemos
hsv(217.2, 76%, 96.5%)rgb(59, 130, 246)Tomamos tal cual la notación con paréntesis, la misma que da el convertidor de RGB a HSV.
hsb(217.2, 76%, 96.5%)rgb(59, 130, 246)Tratamos el nombre HSB como HSV, porque es el mismo modelo.
H 217,2 S 76 B 96,5rgb(59, 130, 246)Quitamos las letras de los campos del Selector de color de Photoshop y leemos la coma entre cifras como decimal.
217,2º 76% 96,5%rgb(59, 130, 246)Leemos como grado el ordinal º, que en el teclado español está más a mano que el signo de grado.
0,6034 0,7602 0,9647rgb(59, 130, 246)Reconocemos tres fracciones no mayores que 1 como notación de Python y las leemos como con la opción 0–1.
hsva(217.2, 76%, 96.5%, 0.5)rgba(59, 130, 246, 0.5)Tomamos el cuarto número como opacidad y lo pasamos al resultado como rgba.
[109 194 246]rgb(59, 127, 246)Leemos con la opción OpenCV un array de NumPy impreso por Python, con corchetes incluidos.
-120, 100%, 100%rgb(0, 0, 255)Giramos un tono negativo sobre la rueda igual que CSS, así que −120° es lo mismo que 240°.
hsv(217.2, 76%, 96.5%rgb(59, 130, 246)La falta del paréntesis de cierre es una errata, así que leemos los números igualmente.

Convertir otras unidades a RGB

Fuentes

  1. Modelo de color HSV — Wikipedia
  2. Elegir colores en Adobe Photoshop — Adobe
  3. Color Gamut Transform Pairs (SIGGRAPH 78) — Alvy Ray Smith
  4. HSL and HSV — HSV to RGB — Wikipedia (en inglés)
  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

Todos los valores de las tablas se calcularon a partir de las definiciones de las unidades y se comprobaron aritméticamente antes de publicarlos. Los datos históricos y los nombres de las unidades locales proceden de las fuentes indicadas arriba.

Última revisión del contenido: · redactado y verificado por el equipo de Arteon

Preguntas frecuentes sobre convertir HSV a RGB

¿Por qué el convertidor no acepta una saturación de 194?

Con la opción 0–360°, 0–100%, la saturación y el valor llegan como mucho a 100. Un número mayor sin signo de porcentaje suele venir de la escala de 0 a 255 de OpenCV, así que en lugar de recortarlo en silencio al 100%, el convertidor muestra un aviso. Cambia entonces la Notación HSV a OpenCV (0–179, 0–255).

En la notación 0–1, ¿el tono también es una fracción?

Sí. El módulo colorsys de Python da los tres números de 0 a 1[10], así que el tono es una fracción de la vuelta completa. 0,6034 × 360° da 217,2°.

¿Cómo paso de HSV a código HEX?

Convierte aquí el valor y pega el resultado en el convertidor de RGB a HEX. El color lo ves enseguida en la muestra cuadrada junto al campo, y al pulsarla se abre el selector de color del sistema.

¿Cómo paso de RGB a HSV?

Escribe los canales en el convertidor de RGB a HSV. El botón Cambiar orden te lleva allí con el resultado actual.

Captura de pantalla de la herramienta gratuita de Arteon: Convierte valores HSV a RGB

Ayúdanos a mejorar nuestras herramientas

¿Tienes una idea para una función, has encontrado un fallo o quieres proponer otra herramienta? Escríbenos.