Colors 如何将CIE颜色转换为以下格式x=0.615,y=0.346,5.6 cd/m2;到十六进制或RGB

Colors 如何将CIE颜色转换为以下格式x=0.615,y=0.346,5.6 cd/m2;到十六进制或RGB,colors,Colors,Iv'e找到了xyz的转换器,以及讨论这个问题的帖子。但是找不到颜色的“cd/m2”分量的良好参考您在问题中给出的坐标是CIE xyY(小x,小y,大y),它们不是CIE XYZ三刺激值(大x,大y,大Z)。两者的共同点是亮度Y。CIE xyY是CIE XYZ沿亮度Y轴的透视投影,用于分离亮度和色度信息 要从CIE xyY转换为十六进制或RGB(sRGB),您需要遵循以下路径: CIE xyY-->CIE XYZ-->RGB-->十六进制 使用,此转换将表示为: 导入颜色 xyY=[0.615,

Iv'e找到了xyz的转换器,以及讨论这个问题的帖子。但是找不到颜色的“cd/m2”分量的良好参考

您在问题中给出的坐标是CIE xyY(小x,小y,大y),它们不是CIE XYZ三刺激值(大x,大y,大Z)。两者的共同点是亮度Y。CIE xyY是CIE XYZ沿亮度Y轴的透视投影,用于分离亮度和色度信息

要从CIE xyY转换为十六进制或RGB(sRGB),您需要遵循以下路径:

CIE xyY-->CIE XYZ-->RGB-->十六进制

使用,此转换将表示为:

导入颜色
xyY=[0.615,0.346,5.6]
XYZ=颜色。xyY_到XYZ(xyY)
RGB=color.XYZ_to_sRGB(XYZ,apply_cctf_encoding=False)
打印(RGB)
RGB_n=颜色。实用程序。最大规格化(RGB)
打印(RGB_n)
打印(color.notation.RGB_to_HEX(color.cctf_编码(RGB_n)))
或使用最新开发的分支机构:

导入颜色
xyY=[0.615,0.346,5.6]
打印(颜色转换(xyY,'CIE xyY','十六进制'))

请注意,由于您的颜色是高动态范围(HDR),即Y=5.6,因此在从RGB转换为十六进制之前,如果不进行归一化处理,则无法将其转换为十六进制表示。此处颜色被归一化,因此最大RGB值为1,但也值得考虑的是,您使用的是sRGB颜色并将Y除以80,这是典型的sRGB显示峰值亮度。

您在问题中给出的坐标是CIE xyY(小x、小Y、大Y),它们不是CIE XYZ三刺激值(大X、大Y、大Z)。两者的共同点是亮度Y。CIE xyY是CIE XYZ沿亮度Y轴的透视投影,用于分离亮度和色度信息

要从CIE xyY转换为十六进制或RGB(sRGB),您需要遵循以下路径:

CIE xyY-->CIE XYZ-->RGB-->十六进制

使用,此转换将表示为:

导入颜色
xyY=[0.615,0.346,5.6]
XYZ=颜色。xyY_到XYZ(xyY)
RGB=color.XYZ_to_sRGB(XYZ,apply_cctf_encoding=False)
打印(RGB)
RGB_n=颜色。实用程序。最大规格化(RGB)
打印(RGB_n)
打印(color.notation.RGB_to_HEX(color.cctf_编码(RGB_n)))
或使用最新开发的分支机构:

导入颜色
xyY=[0.615,0.346,5.6]
打印(颜色转换(xyY,'CIE xyY','十六进制'))

请注意,因为您的颜色是高动态范围(HDR),即Y=5.6,在从RGB转换为十六进制之前,如果不进行归一化处理,则无法将其转换为十六进制表示法。此处对颜色进行归一化,使最大RGB值为1,但也值得考虑的是,您使用的是sRGB颜色,并将Y除以80,这是典型的sRGB显示峰值亮度。

t谢谢你的参考。我尝试了颜色库,得到了与你相同的结果。唯一的问题是xyY=[0.615,0.346,5.6]应该会产生某种红色。而“#d9f14f”更绿色。当我在这里使用xyY计算器时,xyY=[0.615,0.346,5.6]带来了更像红色的#851703。Kel Solaar,你知道是什么带来了差异吗?所以这一个很有趣,问题是因为它是一种高动态范围的颜色,我在回答时没有注意到,但结果是sRGB编码值等于[3.8645932 0.94833937 0.31179851],因此红色远远超过1,因此您必须以某种方式使其正常化。但是,没有关于如何使其正常化的规则。我将相应地修改答案。感谢您!由于您的问题,我们对该类型的转换实施了更好的支持:感谢您提供的良好参考。我尝试了颜色库,得到了与您相同的结果。th唯一的问题是xyY=[0.615,0.346,5.6]应该会导致某种红色。而“#d9f14f”更为绿色。当我在这里使用xyY计算器时,xyY=[0.615,0.346,5.6]带来了更像红色的#851703。Kel Solaar,你知道是什么带来了差异吗?所以这一个很有趣,问题是因为它是一种高动态范围的颜色,我在回答时没有注意到,但结果是sRGB编码值等于[3.8645932 0.94833937 0.31179851],因此红色远远超过1,因此您必须以某种方式使其正常化。但是,关于如何使其正常化,没有任何规则。我将相应地修改答案。感谢您!由于您的问题,我们对该类型的转换实施了更好的支持:
[ 23.33310243   0.88648      0.07921734]
[ 1.          0.03799238  0.00339506]
#fe360b
.../colour/colour/utilities/verbose.py:237: ColourUsageWarning: "RGB" array contains values over 1 and will be normalised, unpredictable results may occur!
  warn(*args, **kwargs)
#fe360b