#include #include #include #include // std::pair #include // all opencv header #include // exiv2 #include "hdrplus/hdrplus_pipeline.h" #include "hdrplus/burst.h" #include "hdrplus/align.h" #include "hdrplus/merge.h" #include "hdrplus/finish.h" namespace hdrplus { void hdrplus_pipeline::run_pipeline( \ const std::string& burst_path, \ const std::string& reference_image_path ) { // Create burst of images burst burst_images( burst_path, reference_image_path ); std::vector>>> alignments; // Read exif tags Exiv2::Image::AutoPtr image = Exiv2::ImageFactory::open(reference_image_path); assert(image.get() != 0); image->readMetadata(); Exiv2::ExifData &exifData = image->exifData(); if (exifData.empty()) { std::string error(reference_image_path); error += ": No Exif data found in the file"; std::cout << error << std::endl; } int ISO = exifData["Exif.Image.ISOSpeedRatings"].toLong(); int white_level = exifData["Exif.Image.WhiteLevel"].toLong(); double black_level = exifData["Exif.Image.BlackLevel"].toFloat(); // Run align align_module.process( burst_images, alignments ); // Run merging merge_module.process( burst_images, alignments, ISO, white_level, black_level ); // Run finishing } } // namespace hdrplus