如何在色度图中绘制多个RGB坐标
How to plot multiple RGB coordinates in chromaticity diagram
我在将 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,)
我收到这个错误:
回溯(最近调用最后):
文件“C:\Users\User\PycharmProjects\pythonProject4\Overige\Cie.py”,第 8 行,位于
RGB = np.array([79, 2, 45], [87, 12, 67])
类型错误:字段元素必须是 2 元组或 3 元组,得到 '87
在此图中,我想绘制我的 RGB 值:
总共我想在这张图中绘制大约 20 个 RGB 值。
谁能帮我解决这个问题,或者有 better/easier 的方法吗?
谢谢!
您错误地使用了 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 文档中的示例中看到的那样。
虽然@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)
基本上,您需要知道它们是如何编码的,以便在内部,定义可以进行正确的数学运算来呈现它们。
我在将 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,)
我收到这个错误:
回溯(最近调用最后): 文件“C:\Users\User\PycharmProjects\pythonProject4\Overige\Cie.py”,第 8 行,位于 RGB = np.array([79, 2, 45], [87, 12, 67]) 类型错误:字段元素必须是 2 元组或 3 元组,得到 '87
在此图中,我想绘制我的 RGB 值:
总共我想在这张图中绘制大约 20 个 RGB 值。
谁能帮我解决这个问题,或者有 better/easier 的方法吗?
谢谢!
您错误地使用了 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 文档中的示例中看到的那样。
虽然@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)
基本上,您需要知道它们是如何编码的,以便在内部,定义可以进行正确的数学运算来呈现它们。