2013-02-13 7 views
3

Я пытаюсь получить среднее значение нескольких снимков с OpenCV, вот мой код:как вычислить среднее значение нескольких фотографий

#include <opencv2\core\core.hpp> 
#include <opencv2\highgui\highgui.hpp> 
#include <opencv2\opencv.hpp> 
using namespace std; 
using namespace cv; 

int main(){ 
    cv::Mat frame,frame32f; 
    char filename[40]; 
    cv::Mat mean; 
    const int count =10; 
    const int width = 1920; 
    const int height = 1080; 
    cv::Mat resultframe = cv::Mat::zeros(height,width,CV_32FC3); 
    for(int i = 1 ; i<= count; i++){ 
     sprintf(filename,"d:\\BMdvideos\\images\\image%d.tiff",i); 
     frame = imread(filename,CV_LOAD_IMAGE_COLOR); 
     frame.convertTo(frame32f,CV_32FC3); 
     resultframe +=frame32f; 
     cout << " i = " << i<<endl; 
     frame.release(); 
    } 
    resultframe *= (1.0/count); 

    imshow("",resultframe); 
    waitKey(0); 
    return 0; 
} 

я получаю всегда белую рамку в imshow, любой идея, почему я получаю это. Заранее спасибо за вашу помощь !

+1

Я сказал вам в [предыдущий ответ] (http://stackoverflow.com/a/14202055/1231073), что, если вы хотите визуализировать изображение с плавающей запятой, его значения должны быть нормированы в диапазоне от 0.0 до 1.0. – sgarizvi

ответ

4

Возможно, проблема заключается в том, что стандартное изображение RGB использует неподписанные значения char и, следовательно, имеет диапазон [0,255]. Я считаю, что всплывают образы, как ожидается, будет в диапазоне [0,1], так что попробуйте сделать:

resultframe *= (1.0/count/255)

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