Colors 覆盆子皮&x2B;neopixel:若RGB LED的亮度降低,是否意味着某些颜色无法渲染?

Colors 覆盆子皮&x2B;neopixel:若RGB LED的亮度降低,是否意味着某些颜色无法渲染?,colors,raspberry-pi,rgb,led,neopixel,Colors,Raspberry Pi,Rgb,Led,Neopixel,参考python库neopix(rpi_ws281x),要控制WS2812B RGB LED条带,通过将每个子LED的字节从255缩放到127来调整亮度是否会限制我们渲染某些颜色 根据库,出于调光目的,执行以下代码: def setBrightness(self, brightness): """Scale each LED in the buffer by the provided brightness. A brightness of 0 is the da

参考python库
neopix
(rpi_ws281x),要控制WS2812B RGB LED条带,通过将每个子LED的字节从255缩放到127来调整亮度是否会限制我们渲染某些颜色

根据库,出于调光目的,执行以下代码:

def setBrightness(self, brightness):
        """Scale each LED in the buffer by the provided brightness.  A brightness
        of 0 is the darkest and 255 is the brightest.
        """
        ws.ws2811_channel_t_brightness_set(self._channel, brightness)

然而,如果我想以50%的亮度渲染RGB(255187120)的颜色:在我看来,数据帧位被限制在每个像素的最大值(127127127)——根据上面的代码,上面的颜色是不可显示的

我说得对吗

有人能解释一下该库的亮度控制/调光功能是如何工作的吗? 它不应该降低PWM占空比以降低亮度(功率)吗

请解释一下。多谢各位

更新:

通过绘制亮度与CCT的对比图,在较低的亮度(100%-->75%-->50%-->25%)下,CCT增加。如何纠正这一点

import colour
import numpy as np
import matplotlib.pyplot as plt

data = np.array([255, 187, 120])
data75 = data*0.75
data50 = data*0.5
data25 = data*0.25

datas = [data, data75, data50, data25]
methods = ['daylight','kang2002','mccamy1992','hernandez1999']

def rgb2cct(x,y):
    RGB = np.array(x)
    XYZ = colour.sRGB_to_XYZ(RGB / 255)
    xy = colour.XYZ_to_xy(XYZ)
    CCT = colour.xy_to_CCT(xy, y)
    #print(CCT)
    return CCT

X =[100,75,50,25]
Y = []

for j in methods:
    print(j)
    for k,v in enumerate(datas):
        u = rgb2cct(v,j)
        Y.append(u)

def chunks(lst, n):
    for i in range(0, len(lst), n):
        yield lst[i:i + n]

plot = list(chunks(Y,4))

for i,j in zip(plot,methods):
    plt.plot(X,i, label = j)

plt.axhline(y=3200, color = 'black', linewidth=0.5)
plt.legend()
plt.show()

颜色值不会被剪裁,而是与亮度因子相乘。所以
255
变成
127
127
变成
63

颜色
(255187120)
将变成
(127,93,60)

这意味着您将均匀地丢失所有较亮的颜色“变体”

3200K的CCT定义为
(255、187、120)
,在
(127、93、60)
处仍然是3200K,因为颜色之间的关系保持不变。如果LED具有更高的动态范围,3200K可以定义为
(1023375239)


但有一点需要注意的是,这些发光二极管的亮度。通常,从
0
16
的亮度跳变比从
111
127
的亮度跳变要明显得多,因此是的,从这个意义上讲,您将丢失颜色。通过在LED上放置黑色织物,您可以获得更精确的颜色,而LED只能通过50%的光线。

您好,在我的应用程序中,颜色的重要性在于显示和维持正确的相关色温(CCT)。3200 K的CCT要求RGB值
(255、187、120)
。因此,我在考虑根据用户需求以更低的功耗显示正确的颜色。在这种情况下,也许我应该关闭50%的像素。