Heim > Backend-Entwicklung > Golang > Wie kann ich mit Python die Zwischenfarbe zwischen zwei gegebenen RGB-Farben finden?

Wie kann ich mit Python die Zwischenfarbe zwischen zwei gegebenen RGB-Farben finden?

DDD
Freigeben: 2024-12-08 16:45:14
Original
592 Leute haben es durchsucht

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

Die Zwischenfarbe zwischen gemalten Farbtönen finden

Beim Mischen von Farben wird die resultierende Farbe durch die Absorptionseigenschaften der Pigmente beeinflusst. Blaue Farbe absorbiert rotes und grünes Licht, während gelbe Farbe blaues Licht absorbiert. In Kombination würden diese Pigmente theoretisch ein schlammiges Grau oder Schwarz ergeben. In der Praxis führt die Bevorzugung blauer Farbe zu Grün jedoch oft zu einem schlammigen Grünton.

Anstatt das Mischen von Farben zu simulieren, kann ein Algorithmus zum Interpolieren von Farben entlang eines Farbkreises intuitive Ergebnisse liefern. Der HSL-Farbraum (Hue, Saturation, Lightness) ist besonders nützlich, da er die Mittelung von Farbtönen ermöglicht.

Python-Implementierung

Der folgende Python-Code implementiert die Interpolation Algorithmus:

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.))
Nach dem Login kopieren

Ergebnisse

Unter Verwendung von Blau und Gelb als Eingabefarben erzeugt der Algorithmus einen grünen Farbton:

>>> average_colors((255,255,0),(0,0,255))
(0, 255, 111)
Nach dem Login kopieren

Mischen von Blau und Cyan erzeugt Cyan:

>>> average_colors((255,255,0),(0,255,255))
(0, 255, 0)
Nach dem Login kopieren

Einschränkungen

Es ist wichtig zu beachten, dass dieser Algorithmus das Mischen von Farben nicht genau simuliert. Beim Mischen von Farben wird Licht absorbiert, was ein komplexerer Prozess ist. Der HSL-Interpolationsalgorithmus ermöglicht eine intuitive Farbmischung, die nicht auf der physischen Realität basiert.

Das obige ist der detaillierte Inhalt vonWie kann ich mit Python die Zwischenfarbe zwischen zwei gegebenen RGB-Farben finden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage