~paparazzi-uav/paparazzi/v5.0-manual

« back to all changes in this revision

Viewing changes to sw/ext/opencv_bebop/opencv/samples/cpp/tutorial_code/photo/hdr_imaging/hdr_imaging.cpp

  • Committer: Paparazzi buildbot
  • Date: 2016-05-18 15:00:29 UTC
  • Revision ID: felix.ruess+docbot@gmail.com-20160518150029-e8lgzi5kvb4p7un9
Manual import commit 4b8bbb730080dac23cf816b98908dacfabe2a8ec from v5.0 branch.

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
#include <opencv2/photo.hpp>
 
2
#include "opencv2/imgcodecs.hpp"
 
3
#include <opencv2/highgui.hpp>
 
4
#include <vector>
 
5
#include <iostream>
 
6
#include <fstream>
 
7
 
 
8
using namespace cv;
 
9
using namespace std;
 
10
 
 
11
void loadExposureSeq(String, vector<Mat>&, vector<float>&);
 
12
 
 
13
int main(int, char**argv)
 
14
{
 
15
    vector<Mat> images;
 
16
    vector<float> times;
 
17
    loadExposureSeq(argv[1], images, times);
 
18
 
 
19
    Mat response;
 
20
    Ptr<CalibrateDebevec> calibrate = createCalibrateDebevec();
 
21
    calibrate->process(images, response, times);
 
22
 
 
23
    Mat hdr;
 
24
    Ptr<MergeDebevec> merge_debevec = createMergeDebevec();
 
25
    merge_debevec->process(images, hdr, times, response);
 
26
 
 
27
    Mat ldr;
 
28
    Ptr<TonemapDurand> tonemap = createTonemapDurand(2.2f);
 
29
    tonemap->process(hdr, ldr);
 
30
 
 
31
    Mat fusion;
 
32
    Ptr<MergeMertens> merge_mertens = createMergeMertens();
 
33
    merge_mertens->process(images, fusion);
 
34
 
 
35
    imwrite("fusion.png", fusion * 255);
 
36
    imwrite("ldr.png", ldr * 255);
 
37
    imwrite("hdr.hdr", hdr);
 
38
 
 
39
    return 0;
 
40
}
 
41
 
 
42
void loadExposureSeq(String path, vector<Mat>& images, vector<float>& times)
 
43
{
 
44
    path = path + std::string("/");
 
45
    ifstream list_file((path + "list.txt").c_str());
 
46
    string name;
 
47
    float val;
 
48
    while(list_file >> name >> val) {
 
49
        Mat img = imread(path + name);
 
50
        images.push_back(img);
 
51
        times.push_back(1 / val);
 
52
    }
 
53
    list_file.close();
 
54
}