2015-03-12 3 views
1

Ну, я пытаюсь нормализовать некоторые (инфракрасные) данные термографии, чтобы отобразить их позже.Нормализованные данные Matplotlib (Python)

Однако я застрял на нормализацию, я мог бы, конечно, сделать это вручную, но мне интересно, почему код Matplotlib не работает, код питона показан ниже:

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

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] 
+0

почему вы поставить вызов в Parenthese? – MaxNoe

+0

Я попытался как можно меньше изменить код вопроса. Скобки были там, поэтому я их оставил – hitzg

Смежные вопросы