4

私は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 で常に白いフレームが表示されるのですが、なぜこれが表示されるのでしょうか。よろしくお願いします。

4

1 に答える 1

4

問題は、標準の RGB イメージが unsigned char 値を使用しているため、範囲が [0,255] である可能性があります。float 画像は [0,1] の範囲にあると予想されるので、次のようにしてみてください。

resultframe *= (1.0/count/255)

于 2013-02-13T15:56:01.030 に答える