Maison >développement back-end >Golang >Comment puis-je trouver la couleur intermédiaire entre deux couleurs RVB données à l'aide de Python ?

Comment puis-je trouver la couleur intermédiaire entre deux couleurs RVB données à l'aide de Python ?

DDD
DDDoriginal
2024-12-08 16:45:14560parcourir

How Can I Find the Intermediate Color Between Two Given RGB Colors Using Python?

Trouver la couleur intermédiaire entre les teintes peintes

Lors du mélange des peintures, la couleur obtenue est influencée par les propriétés d'absorption des pigments. La peinture bleue absorbe la lumière rouge et verte, tandis que la peinture jaune absorbe la lumière bleue. Une fois combinés, ces pigments produiraient théoriquement un gris ou un noir boueux. Cependant, dans la pratique, la tendance de la peinture bleue vers le vert se traduit souvent par une teinte verte trouble.

Au lieu de simuler le mélange de peinture, un algorithme d'interpolation des couleurs le long d'une roue chromatique peut fournir des résultats intuitifs. L'espace colorimétrique HSL (Teinte, Saturation, Luminosité) est particulièrement utile car il permet de faire la moyenne des teintes.

Implémentation Python

Le code Python ci-dessous implémente l'interpolation algorithme :

from colorsys import rgb_to_hls,hls_to_rgb
from math import sin,cos,atan2,pi

def average_colors(rgb1, rgb2):
    h1, l1, s1 = rgb_to_hls(rgb1[0]/255., rgb1[1]/255., rgb1[2]/255.)
    h2, l2, s2 = rgb_to_hls(rgb2[0]/255., rgb2[1]/255., rgb2[2]/255.)
    s = 0.5 * (s1 + s2)
    l = 0.5 * (l1 + l2)
    x = cos(2*pi*h1) + cos(2*pi*h2)
    y = sin(2*pi*h1) + sin(2*pi*h2)
    if x != 0.0 or y != 0.0:
        h = atan2(y, x) / (2*pi)
    else:
        h = 0.0
        s = 0.0
    r, g, b = hls_to_rgb(h, l, s)
    return (int(r*255.), int(g*255.), int(b*255.))

Résultats

En utilisant le bleu et le jaune comme couleurs d'entrée, l'algorithme produit une teinte verte :

>>> average_colors((255,255,0),(0,0,255))
(0, 255, 111)

Mélange du bleu et le cyan produit cyan :

>>> average_colors((255,255,0),(0,255,255))
(0, 255, 0)

Limitations

Il est important de noter que cet algorithme ne simule pas avec précision le mélange de peinture. Le mélange de peinture implique l’absorption de la lumière, ce qui est un processus plus complexe. L'algorithme d'interpolation HSL fournit un mélange intuitif de couleurs qui n'est pas ancré dans la réalité physique.

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