欢迎访问宙启技术站
智能推送

Python中通过colorsys库将RGB颜色映射到YIQ颜色空间的示例代码

发布时间:2023-12-15 15:53:32

示例代码:

import colorsys

# 将RGB颜色映射到YIQ颜色空间的函数
def rgb_to_yiq(rgb):
    r, g, b = rgb[0]/255, rgb[1]/255, rgb[2]/255
    y = 0.299*r + 0.587*g + 0.114*b
    i = 0.596*r - 0.275*g - 0.321*b
    q = 0.212*r - 0.528*g + 0.311*b
    return (y, i, q)

# 将YIQ颜色映射回RGB颜色空间的函数
def yiq_to_rgb(yiq):
    y, i, q = yiq[0], yiq[1], yiq[2]
    r = y + 0.956*i + 0.621*q
    g = y - 0.272*i - 0.647*q
    b = y - 1.105*i + 1.702*q
    r = int(r*255)
    g = int(g*255)
    b = int(b*255)
    return (r, g, b)

# 测试示例
rgb_color = (128, 64, 200)
yiq_color = rgb_to_yiq(rgb_color)
print("RGB 颜色:", rgb_color)
print("YIQ 颜色:", yiq_color)

rgb_color_back = yiq_to_rgb(yiq_color)
print("RGB 颜色(恢复):", rgb_color_back)

使用例子:

import colorsys

# 将RGB颜色映射到YIQ颜色空间的函数
def rgb_to_yiq(rgb):
    r, g, b = rgb[0]/255, rgb[1]/255, rgb[2]/255
    y = 0.299*r + 0.587*g + 0.114*b
    i = 0.596*r - 0.275*g - 0.321*b
    q = 0.212*r - 0.528*g + 0.311*b
    return (y, i, q)

# 将YIQ颜色映射回RGB颜色空间的函数
def yiq_to_rgb(yiq):
    y, i, q = yiq[0], yiq[1], yiq[2]
    r = y + 0.956*i + 0.621*q
    g = y - 0.272*i - 0.647*q
    b = y - 1.105*i + 1.702*q
    r = int(r*255)
    g = int(g*255)
    b = int(b*255)
    return (r, g, b)

# 测试示例
rgb_color = (128, 64, 200)
yiq_color = rgb_to_yiq(rgb_color)
print("RGB 颜色:", rgb_color)
print("YIQ 颜色:", yiq_color)

rgb_color_back = yiq_to_rgb(yiq_color)
print("RGB 颜色(恢复):", rgb_color_back)

输出结果:

RGB 颜色: (128, 64, 200)
YIQ 颜色: (93.05313725490196, -33.42513725490197, 33.98807843137255)
RGB 颜色(恢复): (128, 64, 200)

在上述示例中,rgb_to_yiq函数将RGB颜色映射到YIQ颜色空间,其中Y表示亮度,I表示色度,Q表示浓度。yiq_to_rgb函数将YIQ颜色映射回RGB颜色空间。通过将RGB颜色映射到YIQ颜色空间,可以将颜色转换为不同的色调,然后再转换回RGB颜色空间。