我正在阅读Python中的一些值。这些值以一种奇怪的格式出现。文件上说:
颜色由0到8355711之间的单个值表示。RGB(r,g,b)函数计算((R*127 x 2^16) + (G*127 x 2^8) + B*127),其中R、G和B是0.00至1.00之间的值。
Som,红色的值为16712965,我很想知道如何将这些值“解压缩”为元组或什么的,但是我很难理解这个数学。如果这是不可能的,以某种方式将该值转换为rgb值的方法将是很好的。请帮帮我!谢谢
发布于 2014-09-24 10:22:41
你在文字上有错误
那么您的源和目标颜色格式究竟是什么?
你到底想要什么?
x>>n是指x值为n位的算术位右移(将零填充到MSB位)。x/(2^n)相同如果您想要不同的转换,那么必须指定它。
发布于 2014-09-24 05:12:55
请注意公式中的2^8和2^16,这表明您可以在C中使用类似右移位的方法。用2^8=256除以输入数字等于8位右移。这里要注意的另一点是,你的R,G,B输出值是实数。因此,您希望在计算过程中使用float函数。
c = 8355711
print 'input colour', c
# conversion to RGB format
B = float( c % 256 )/127.0
c = c / 256
G = float( c % 256)/127.0
c = c / 256
R = float( c % 256)/127.0
print R, G, B
# reverse calculation for verifying the result
colour = int((R*127 * 65536) + (G*127 * 256) + B*127)
print colourhttps://stackoverflow.com/questions/26008757
复制相似问题