如何将我拍摄的照片中的像素rgb值正确转换为发送到Phillips Hue设备所需的XY值? 我目前的代码执行以下操作: 1:拍照,找到最常见的颜色。 2:循环抛出然后拍摄另一张照片。 3:将价值发送给Phillips Hue灯泡。 如果您需要更多代码,请告诉我,如果有帮助,我可以分享所有内容。 我在这里特别困惑,因为colormath中的转换给了我一个xyz而不仅仅是一个xy。如果我给出rbg(0,0,0)的转换,它会在色调灯泡上给出一些颜色。
from beautifulhue.api import Bridge
from colormath.color_objects import RGBColor
from time import sleep
while True:
from pprint import pprint
color_set = colors_from_cam()
pprint(color_set)
for item in color_set:
print "Getting the color"
pprint(item)
time_length = item[0] # prominence
red, green, blue = item[1] # colors
#Set a lights attributes based on RGB colors.
rgb_color = RGBColor(red,green,blue)
xyz_color = rgb_color.convert_to('xyz', target_rgb='cie_rgb')
xyz_x = xyz_color.xyz_x
xyz_y = xyz_color.xyz_y
xyz_z = xyz_color.xyz_z
resource = {
'which':3,
'data':{
'state':{'on':True,
'xy':[xyz_x, xyz_y],
'transitiontime': 1,
'bri': 255}
}
}
bridge.light.update(resource)
print "sleeping"
sleep(1)
sleep(2)
print "taking another picture."
答案 0 :(得分:3)
Z是您从colormath转换中获得的XYZ值的必需组件,因此省略Z可能不是您在仅将X和Y发送到色调时要执行的操作。我相信您需要将Z集成到X和Y值中,以将它们标准化为2D颜色矩阵。
x = X /(X + Y + Z);
y = Y /(X + Y + Z);
请参阅:CIE 1931 color space,更具体地说,Chromaticity Diagram了解这些公式。