Имея числа, сгенерированные в цикле for, как вывести их, как если бы их наибольшее значение было 1, а наименьшее 0? - PullRequest
0 голосов
/ 05 февраля 2011

Итак, у меня есть черно-белое изображение в OpenCV, в настоящее время я вывожу каждое из его значений цвета на пиксель в файл, так что я получаю файл значений от 1 до 255. У меня есть много действительно маленьких изображений, поэтому в одном изображении я обычно получают значения, которые имеют небольшую разницу. например, от 25 до 100. Поэтому мне нужен способ печати в файл не значений цвета, а значений от 0 до 1, где самый низкий цвет будет 0, а самый высокий 1 ...

for(x=0;x<w;x++){
     for(y=0;y<h;y++){
          double RealColor = cvGetReal2D(source, y, x);
          file << RealColor << " ";
     }
     file << endl;
}file << endl;

Как это сделать?

Ответы [ 2 ]

4 голосов
/ 05 февраля 2011

Просто сделайте первый проход и найдите минимальное и максимальное значения. Затем выполните второй проход и измените каждое значение как (v - min) / (max - min) перед записью в файл.

1 голос
/ 07 февраля 2011

Это лучше (у OpenCV просто есть функция для нормализации между 0 и 1):

cvNormalize(source,source,1,0,CV_MINMAX );
...