1

我在将 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 值。

有人可以帮我解决这个问题,还是有更好/更简单的方法来做到这一点?

谢谢!

4

2 回答 2

2

您使用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文档中的示例中看到的那样,该函数plot_RGB_chromaticities_in_chromaticity_diagram_CIE1931可以使用 numpy 数组(我在注释中写错了) 。

于 2021-06-11T10:24:36.643 回答
1

虽然@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)

CIE色度图

基本上,您需要知道它们是如何编码的,以便在内部,定义进行正确的数学运算来呈现它们。

于 2021-06-11T19:36:07.107 回答