栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

在其他两种颜色之间寻找颜色的算法-在绘画颜色的颜色空间中

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

在其他两种颜色之间寻找颜色的算法-在绘画颜色的颜色空间中

油漆通过吸收起作用。首先从白光(255,255,255)乘以吸收系数。

蓝色颜料吸收了所有击中它的红色和绿色光。

黄色油漆吸收了所有击中它的蓝光。

在一个理想的世界中,这意味着将黄色和蓝色的油漆混合会产生黑色的油漆,或至多是浑浊的灰色。实际上,“蓝色”涂料偏向绿色,因此您会得到浑浊的绿色。我从未见过将黄色和蓝色混合产生令人满意的绿色的示例。Wikipedia讨论了此过程的一些复杂性:http
:
//en.wikipedia.org/wiki/Primary_color#Subtractive_primaries

我认为您真正要问的是如何沿着色轮插入颜色。这应该与颜色是吸收性的(如涂料中的)还是发射性的(如RGB显示器中的)无关。

编辑:
通过在HSL颜色空间中工作,您可以获得所需的结果。这是一些实现该算法的Python代码;平均色调是棘手的,并且基于我先前对平均角度的回答。

from colorsys import rgb_to_hls,hls_to_rgbfrom math import sin,cos,atan2,pidef 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)

请注意,这个答案并 没有 效仿调漆,为上述原因。相反,它提供了直观的颜色混合,这是任何现实世界中都不存在的。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/406446.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号