这是我正在编写的代码的一部分。看最后一行。
def xyz2srgb(xyz):
"""Convert from XYZ colorspace to sRGB"""
xyz = xyz.T
srgb = N.zeros_like(xyz)
srgb[0] = 3.241*xyz[0] - 1.5374*xyz[1] - 0.4986*xyz[2]
srgb[1] = -0.9692*xyz[0] + 1.876*xyz[1] + 0.0416*xyz[2]
srgb[2] = 0.0556*xyz[0] - 0.204*xyz[1] + 1.057*xyz[2]
srgb /= float(srgb.max())
a = 0.055
srgb = N.where(srgb <= 0.0031308,
12.92*srgb,
(1+a)*srgb**(1/2.4)-a)
它抛出一个错误:
./example.py:29: RuntimeWarning: invalid value encountered in power
(1+a)*srgb**(1/2.4)-a)
这是范围限制吗?我在上面发现了一个类似的线索,所以:Numpy error: invalid value encountered in power
有线索吗?谢谢。
您应该打印出
srgb
的值。可能不是范围误差,而是这里的负系数使
srgb
的元素完全有可能是负数,并且除非您已经在以复数形式工作,否则当您使用该电源时将发出警告:在传递
where
的参数之前,将对其求值,因此在srgb <= 0.0031308
条件上的分支划分值并触发警告之前,将获取幂。对于这些错误,可以使用指数中的浮点数。例如:
致意
相关问题 更多 >
编程相关推荐