如何在色度图中绘制多个RGB坐标

2024-05-19 20:27:55 发布

您现在位置:Python中文网/ 问答频道 /正文

我在将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.数组([79,2,45],[87,12,67]) TypeError:字段元素必须是2或3元组,得到'87

在此图中,我想绘制我的RGB值: enter image description here

总的来说,我想在这张图中画出大约20个RGB值

有人能帮我解决这个问题吗?或者有更好/更简单的方法吗

谢谢


Tags: 代码fromimportnumpy颜色可视化as错误
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可以使用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)

CIE Chromaticity Diagram

基本上,您需要知道它们是如何被编码的,以便在内部,定义能够正确地表示它们

相关问题 更多 >