ホームページ > バックエンド開発 > Golang > Python を使用して、指定された 2 つの RGB 色の間の中間色を見つけるにはどうすればよいですか?

Python を使用して、指定された 2 つの RGB 色の間の中間色を見つけるにはどうすればよいですか?

DDD
リリース: 2024-12-08 16:45:14
オリジナル
593 人が閲覧しました

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

ペイントした色相の中間色を見つける

絵の具を混合するとき、得られる色は顔料の吸収特性の影響を受けます。青い絵の具は赤と緑の光を吸収し、黄色の絵の具は青い光を吸収します。これらの顔料を組み合わせると、理論的には濁った灰色または黒が生成されます。ただし、実際には、青のペイントが緑に偏ることで、濁った緑の色合いが得られることがよくあります。

ペイントの混合をシミュレートする代わりに、カラー ホイールに沿って色を補間するアルゴリズムを使用すると、直感的な結果が得られます。 HSL (色相、彩度、明度) 色空間は、色相の平均化を可能にするため、特に便利です。

Python の実装

以下の Python コードは補間を実装します。アルゴリズム:

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.))
ログイン後にコピー

結果

入力色として青と黄色を使用して、アルゴリズムは緑の色相を生成します:

>>> average_colors((255,255,0),(0,0,255))
(0, 255, 111)
ログイン後にコピー

青の混合そしてシアンが生成するシアン:

>>> average_colors((255,255,0),(0,255,255))
(0, 255, 0)
ログイン後にコピー

制限

このアルゴリズムはペイントの混合を正確にシミュレートしないことに注意することが重要です。塗料の混合には光の吸収が含まれますが、これはより複雑なプロセスです。 HSL 補間アルゴリズムは、物理的現実に基づいていない直感的な色の混合を提供します。

以上がPython を使用して、指定された 2 つの RGB 色の間の中間色を見つけるにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート