gpt4 book ai didi

colors - Raspberry Pi + neopixel : If brightness of RGB LEDs are reduced, 这是否意味着某些颜色无法渲染?

转载 作者:行者123 更新时间:2023-12-04 13:36:13 25 4
gpt4 key购买 nike

引用python库neopixel (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 (255, 187, 120) 的颜色:在我看来,数据帧位被限制为每个像素的最大值 (127, 127, 127) - 根据上面的代码,通过哪个,上面的颜色是不可显示的?

我对吗?

谁能解释该库中的亮度控制/调光功能是如何工作的?
难道不应该降低 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()

enter image description here

最佳答案

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

颜色(255, 187, 120)然后会变成 (127, 93, 60) .

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

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

但要注意的一件事是亮度是 not a linear function在这些 LED 中。通常亮度从0跳起至 16111 中的更引人注目至 127 ,所以是的,从这个意义上说,你会失去颜色。通过在 LED 上放一块黑色织物,您可以获得更准确的颜色,只让 50% 的光线通过。

关于colors - Raspberry Pi + neopixel : If brightness of RGB LEDs are reduced, 这是否意味着某些颜色无法渲染?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61848787/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com