我正在尝试对某些(红外)热成像数据进行标准化,以便稍后显示。
然而,我仍然坚持正常化,我当然可以手工完成,但我想知道为什么matplotlib代码不起作用,python代码如下所示:
import numpy as N
import matplotlib.colors as colors
test2 = N.array([100, 10, 95])
norm = colors.Normalize(0,100)
for pix in N.nditer(test2, op_flags=['readwrite']):
val = (norm.process_value(pix)[0])
print (val)
img = norm.process_value(test2)[0]
print(img)
现在我希望vals或img显示正确的处理数据。取决于matplotlib.colors.Normalize.process_value
实际应该作为参数获得的内容。
但无论如何:两个函数都没有规范化,只返回原始函数..根本不在[0, 1]
区间。
答案 0 :(得分:1)
documentation of Normalize在这里可能有点欺骗:process_value
是一个仅用于预处理(和静态)的函数。实际用法用这句话描述:
一个类,当被调用时,可以将数据规范化为[0.0,1.0] 间隔。
因此,当您调用类时,会发生规范化:
import numpy as N
import matplotlib.colors as colors
test2 = N.array([100, 10, 95])
norm = colors.Normalize(0,100)
for pix in N.nditer(test2, op_flags=['readwrite']):
val = (norm(pix))
print (val)
img = norm(test2)
print(img)
输出:
1.0
0.1
0.95
[ 1. 0.1 0.95]