在将RGB值绘制成色度图时,我遇到了一些问题:
我有一些不同的RGB值,我想将它们绘制成色度图,使它们变得直观。我想让它们变得直观,因为我必须展示它们,我想让每个人都能看到颜色的差异。
使用Python中的颜色包,我可以制作色度图,并且可以绘制1 RGB值。当我添加更多的RGB值时,我得到一个错误。
这是我的代码:
import numpy as np
from colour.plotting import *
RGB = np.array([79, 2, 45], [87, 12, 67])
plot_RGB_chromaticities_in_chromaticity_diagram_CIE1931(
RGB,)我收到了这个错误:
回溯(最近一次调用):文件字段第8行,在RGB = np.array(79,2,45,87,12,67)中TypeError:字段元素必须是2元组或3元组,got '87
在这个图表中,我想绘制我的RGB值:

总而言之,我想将大约20个RGB值绘制到这个图表中。
有没有人能帮我解决这个问题,或者有没有更好/更简单的方法?
谢谢!
发布于 2021-06-12 03:36:07
虽然@giacomo-catenazzi的答案是正确的,但这里还有更多的微妙之处。
colour.plotting.plot_RGB_chromaticities_in_chromaticity_diagram_CIE1931定义输入的期望是线性浮点RGB数据,默认使用sRGB色彩空间编码。
在这里,您的RGB值是整数,并且可以是8位非线性编码的sRGB值,因此您可能需要将它们转换为浮点表示形式并对其进行解码:
import colour
import numpy as np
from colour.plotting import *
RGB = colour.models.eotf_inverse_sRGB(np.array([[79, 2, 45], [87, 12, 67]]) / 255)
plot_RGB_chromaticities_in_chromaticity_diagram_CIE1931(RGB)

基本上,您需要知道它们是如何编码的,以便在内部,定义可以正确地用数学来表示它们。
发布于 2021-06-11 18:24:37
您错误地使用了np.array:您应该使用np.array([[79, 2, 45], [87, 12, 67]])而不是np.array([79, 2, 45], [87, 12, 67])。注意,第一个参数应该包含数据,所以您应该定义一个数组的数组,而不是为np.array提供一系列向量。
函数plot_RGB_chromaticities_in_chromaticity_diagram_CIE1931可以使用numpy数组(我的注释是错误的),如plot_RGB_chromaticities_in_chromaticity_diagram_CIE1931文档中的示例所示。
https://stackoverflow.com/questions/67934764
复制相似问题