• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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 
main(int,char ** argv)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 
loadExposureSeq(String path,vector<Mat> & images,vector<float> & times)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 }
55