Maison >développement back-end >C++ >Comment convertir RVB en HSV et inversement dans la plage 0-255 ?

Comment convertir RVB en HSV et inversement dans la plage 0-255 ?

Barbara Streisand
Barbara Streisandoriginal
2024-12-11 18:24:15875parcourir

How to Convert RGB to HSV and Back Again Within the 0-255 Range?

Conversion de RVB en HSV et HSV en RVB dans la plage 0-255

Transformation des représentations de couleurs entre RVB (Rouge, Vert, Bleu) et HSV (Teinte, Saturation, Valeur) est essentiel pour le traitement des images et l'infographie. Cette transformation nécessite de traduire les valeurs de couleur dans des plages spécifiques pour garantir une conversion précise.

Conversion RVB en HSV

La conversion RVB en HSV implique les étapes suivantes :

  1. Normaliser les valeurs RVB : Divisez les valeurs RVB par 255 pour les mettre à l'échelle entre 0 et 1.
  2. Trouver les valeurs minimales et maximales : Déterminez les valeurs minimales et maximales parmi les composants RVB.
  3. Calculer la valeur (V) : Le La valeur est égale à la valeur RVB maximale.
  4. Calculer la saturation (S) : Calculez la saturation à l'aide de la formule :

    S = (V - min) / V
  5. Calculer la teinte (H) : Déterminez la teinte à l'aide d'instructions conditionnelles basées sur les valeurs relatives des composants RVB :

    if (R >= G && R >= B):
     H = (G - B) / (V - min)
    elif (G >= R && G >= B):
     H = 2 + (B - R) / (V - min)
    else:
     H = 4 + (R - G) / (V - min)
  6. Convertir en degrés : Multipliez la valeur de teinte par 60 pour obtenir des degrés.

Conversion HSV en RVB

La conversion HSV en RVB se déroule comme suit :

  1. Normaliser les valeurs HSV : Assurez-vous que la teinte est comprise entre 0 et 360 degrés, que la saturation et la valeur sont comprises dans 0-1.
  2. Trouver l'indice de teinte : Déterminer l'indice entier de la teinte :

    i = int(H / 60.0)
  3. Calculer Partie fractionnaire : Calculez la partie fractionnaire du teinte :

    ff = H / 60.0 - i
  4. Définir les valeurs RVB par défaut :

    R = G = B = V
  5. Calculer les valeurs RVB : Ajustez les valeurs RVB en fonction de la teinte index :

    if (i == 0):
     B = p
    elif (i == 1):
     R = q
    elif (i == 2):
     G = p
    elif (i == 3):
     R = p
    elif (i == 4):
     B = t
    elif (i == 5):
     G = p
  6. Normaliser les valeurs RVB : Multipliez les valeurs RVB par 255 pour restaurer la plage 0-255.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn