C++ 在for循环中生成数字时,如何将其输出为最高值为1,最低值为0?

C++ 在for循环中生成数字时,如何将其输出为最高值为1,最低值为0?,c++,c,boost,opencv,normalization,C++,C,Boost,Opencv,Normalization,所以我在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)

所以我在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;

for(x=0;x只需第一次通过,找到最小值和最大值。然后第二次通过,在写入文件之前将每个值修改为
(v-min)/(max-min)

只需第一次通过,找到最小值和最大值。然后第二次通过,将每个值修改为
(v-min)/(max-min)
在写入文件之前。

这样更好(OpenCV只具有在0和1之间进行规范化的功能):

这是更好的(OpenCV仅具有在0和1之间进行规格化的函数):


问了272个问题,你还没有学会正确格式化代码???我不知道最后的输出是否存在,所以我留下了它。大概它不应该存在。问了272个问题,你还没有学会正确格式化代码???我不知道最后的输出是否存在,所以我留下了它。大概它不应该存在。你怎么知道u在我的情况下搜索最小-最大值?@Kab:在
标题中有
std::min_元素
std::max_元素
。嗯……我试过了……效果有点糟糕……在我的情况下如何搜索最小-最大值?@Kab:在
标题中有
std::min_元素
std::max_元素
嗯…我试过了…效果有点糟糕…你的解决方案只会输出1和0,比如1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 1 1 1 1 0 0 0 1 1 1 1 1 0 0 0 1 1 1 1 1 1 1 0,而我会活着看到0,0.1,0.11…1=)不。如果源是32位浮点,我的解决方案将浮点32位从0输出到1。我确信:我正在我的项目中使用它。你的解决方案只会输出1和0,比如1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 1 0 0 0 0 1 1 1 1 1 1 1 0,而我会活着看到0,0.1,0.11。。。1=)否。如果源为32位浮点,则我的解决方案将浮点32位从0输出到1。我确信:我正在我的项目中使用它。
cvNormalize(source,source,1,0,CV_MINMAX );