Rumah >pembangunan bahagian belakang >Golang >Bagaimanakah Saya Boleh Cari Warna Perantaraan Antara Dua Warna RGB Diberi Menggunakan Python?

Bagaimanakah Saya Boleh Cari Warna Perantaraan Antara Dua Warna RGB Diberi Menggunakan Python?

DDD
DDDasal
2024-12-08 16:45:14559semak imbas

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

Mencari Warna Perantaraan Antara Warna Yang Dicat

Apabila mencampurkan cat, warna yang terhasil dipengaruhi oleh sifat penyerapan pigmen. Cat biru menyerap cahaya merah dan hijau, manakala cat kuning menyerap cahaya biru. Apabila digabungkan, pigmen ini secara teorinya akan menghasilkan kelabu atau hitam berlumpur. Walau bagaimanapun, dalam praktiknya, bias cat biru ke arah hijau selalunya menghasilkan rona hijau berlumpur.

Daripada mensimulasikan pencampuran cat, algoritma untuk menginterpolasi warna di sepanjang roda warna boleh memberikan hasil yang intuitif. Ruang warna HSL (Hue, Saturation, Lightness) amat berguna kerana ia membenarkan purata warna.

Pelaksanaan Python

Kod Python di bawah melaksanakan interpolasi algoritma:

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.))

Keputusan

Menggunakan biru dan kuning sebagai warna input, algoritma menghasilkan warna hijau:

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

Mencampurkan biru dan cyan menghasilkan cyan:

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

Penghadan

Adalah penting untuk ambil perhatian bahawa algoritma ini tidak mensimulasikan pencampuran cat dengan tepat. Pencampuran cat melibatkan penyerapan cahaya, yang merupakan proses yang lebih kompleks. Algoritma interpolasi HSL menyediakan pencampuran warna intuitif yang tidak berasaskan realiti fizikal.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Cari Warna Perantaraan Antara Dua Warna RGB Diberi Menggunakan Python?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn