RGB中的冷色和暖色(http://www.diy-bathroom-remodel.com/images/color_wheel.gif)的范围是多少?
答案 0 :(得分:43)
将您链接的图像作为“温暖”和“冷”的参考,我们得到以下结果。
所以R越多,颜色越暖,B越多,颜色越冷。 G带你穿过绿松石,绿色和黄色的色调,每个都变得越来越暖和。当G为零时,当R和B改变时,您将在圆圈的左下对角线移动。当G接近255时,当R和B改变时,你越过右上对角线。
然而,相邻的暖色和冷色在其中具有不同的绿色。对角线下方的红色比其正上方的红色绿色少。对角线下方的蓝色比其正上方的蓝色更少绿色。这个色轮看起来并不能很好地代表RGB空间,特别是在光谱的蓝色端。
最终,您认为温暖和寒冷取决于您的显示器设置和光线条件。很多也是你的感知和认知 - 你认为是温暖还是冷。在图像中,颜色对比会影响您的判断。明显冷色调旁边的“中间”颜色看起来很温暖,但如果相同的颜色与明显暖色相邻,则看起来很酷。看看这个色轮:
此处显示每个24位颜色(R,G和B各有8位),并显示顶部,右侧,底部和左侧颜色的RGB值。在我看来,有比“温暖”更“酷”的颜色。希望这可以帮助您确定RGB值对于您所感知的冷色和暖色。
奖励:在上图中,您还可以看到以色调,饱和度和值(HSV)颜色模型表示的颜色。 Hue基本上编码颜色。饱和度编码颜色的“饱满度” - 饱和度越低,使其更“黯淡”,即。白色。值编码它的暗度 - 较小的值使其更黑,并且还使饱和度的白色更灰。 Hue从0变为360并且对应于圆的角度,0表示完全红色,90表示霓虹绿色,180表示亮蓝色,270表示蓝紫色,360表示再次变为红色。 S和V从0变为100并将影响确切的阴影 - 这些例子是S = V = 100。
在我看来,0-80和330-360范围内的H值是温暖的,而H> 80且H <330是冷的(大约)。
您可能想要在您喜欢的绘画程序中打开颜色选择器。它们通常可以并排显示HSV和RGB,让您使用色轮并查看对HSV和RGB数字的影响。如果您还没有,我会建议GIMP。它有我一直用来获得这个答案的数字的色轮。
奖金2:以上所有内容都假定主观评估什么是温暖的,什么是酷的。我认为对色温进行客观测量的唯一方法是测量它并在温度范围内表达。通常使用开尔文。该测量不仅考虑了颜色的阴影,还考虑了其亮度(或发出的光量)。如果你有一个现代化的显示器,它可能有一个温度设置,有一些开尔文值可供选择。只要您知道白色的温度(白平衡),就可以计算显示器上每种RGB颜色的温度。但是,这个计算非常复杂,我不知道该怎么做。您可能会发现Bruce Lindbloom是获取更多信息的好来源,或任何有关色彩科学的书籍。但我想这不仅仅是你用你的问题讨价还价......; - )
答案 1 :(得分:4)
在我看来像是
if (B>R) {
color=cool
} else {
color=warm
}
是一个非常好的近似值。您可以使用以下方法在色轮上查看: http://www.colorzilla.com/firefox/
答案 2 :(得分:1)
已经回答,但需要添加:
如果您对物理温度和颜色依赖性感兴趣,那么这就是您要寻找的规模:
从给定温度的黑体发出的光的颜色。在天文学中,这用于星色分类(如BV color index)。
它也可用于间接温度测量。
答案 3 :(得分:1)
我发现这些参数令人满意
对于暖色:
对于冷色:
请注意,高绿色使颜色更冷(在我看来,但这是有争议的^^),这就是为什么它仅限于暖色而不适用于冷色。
答案 4 :(得分:0)
暖色具有更多的红色, 和冷色有更多的蓝色。
在RGB中:
red = 0
blue = 0
if (red > blue) {
isWarmColor = true
isCoolColor = false
}
else if (red < blue) {
isWarmColor = false
isCoolColor = true
}
else {
isWarmColor = false
isCoolColor = false
}
在HSL中:
hueAngle = 0
if (hueAngle < 0 || hueAngle > 360 || hueAngle == 90 || hueAngle == 270) {
isWarmColor = false
isCoolColor = false
}
else if (hueAngle > 90 && hueAngle < 270) {
isWarmColor = false
isCoolColor = true
}
else if (hueAngle < 90 && hueAngle > 270) {
isWarmColor = true
isCoolColor = false
}
答案 5 :(得分:0)
简单准确:
def is_hot(a):
return (a[..., 'RED'] > 128)
其中'RED'代表数组a中红色通道的索引。
这是有效的 - 您可以通过以下方式亲眼看到:(a) 查看 Fabian Fagerholm 的第二个轮子和/或 (b) 转到以下链接,将杆上下移动到两个温暖的末端。< /p>