polaroid-pp

Schlieren and contour plot tool
git clone https://git.0xfab.ch/polaroid-pp.git
Log | Files | Refs | Submodules | README | LICENSE

commit 47db2052f927c0253d02d4078e085836a2fe7479
parent cd663edf130f2edab7170fa0f2ab29d0be0cec94
Author: Fabian Wermelinger <fabianw@mavt.ethz.ch>
Date:   Thu, 28 Apr 2016 18:28:32 +0200

added SceneProcessor

Diffstat:
Aapps/polaroidCamera/SceneProcessor.cpp | 96+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Aapps/polaroidCamera/SceneProcessor.h | 37+++++++++++++++++++++++++++++++++++++
2 files changed, 133 insertions(+), 0 deletions(-)

diff --git a/apps/polaroidCamera/SceneProcessor.cpp b/apps/polaroidCamera/SceneProcessor.cpp @@ -0,0 +1,96 @@ +// File : SceneProcessor.cpp +// Date : Thu 28 Apr 2016 05:43:50 PM CEST +// Author : Fabian Wermelinger +// Description: Scene Processor implementation +// Copyright 2016 ETH Zurich. All Rights Reserved. +#include <iostream> +#include <cstdlib> +#include <cstdio> +#include "SceneProcessor.h" + +using namespace std; + + +void SceneProcessor::_set_cartridge() +{ +} + +void SceneProcessor::_set_paper() +{ +} + +void _load_cam(Polaroid& cam, const char* const fname) const +{ + const double fraction = m_parser("-fraction").asDouble(0.5); + const int direction = m_parser("-direction").asInt(0); + const int channel = m_parser("-channel").asInt(0); + const bool byte_swap = m_parser("-swap").asBool(false); + const int wavelet_type = m_parser("-wtype").asInt(1); + const string input_type = m_parser("-input").asString("hdf5"); + + if (input_type == "hdf5") + cam.load_hdf5(fname, fraction, direction, channel); + else if (input_type == "wavelet") + cam.load_wavelet(fname, fraction, direction, channel, byte_swap, wavelet_type); + else + { + if (isroot) + cerr << "ERROR: Undefined input type \"" << input_type << "\"" << endl; + abort(); + } +} + +void sceneprocessor::process1212(const vector<char*>& scenes, const bool isroot) +{ + Polaroid mycam; + _set_cartridge(); + _set_paper(); + + for (size_t i=0; i<scenes.size(); ++i) + { + _load_cam(mycam, scenes[i]); + + string basename(scenes[i]); + if (basename.find_last_of(".") != string::npos) + basename = basename.substr(0, basename.find_last_of(".")); + + m_photo->make_new(basename+"-polaroid", mycam.width(), mycam.height()); + mycam.capture(*m_cartridge, *m_photo); + + if (isroot) + printf("[Progress %3.1f %%]\n", static_cast<double>(i)/scenes.size()*100.0); + } +} + +void sceneprocessor::process1122(const vector<char*>& scenes) +{ + vector<Polaroid> mycams(scenes.size()); + + // 1.) load scenes + for (size_t i=0; i<scenes.size(); ++i) + { + Polaroid& cam = mycams[i]; + _load_cam(cam, scenes[i]); + if (isroot) + printf("[Load Progress %3.1f %%]\n", static_cast<double>(i)/scenes.size()*100.0); + } + + _set_cartridge(); + _set_paper(); + + // 2.) compute photos + for (size_t i=0; i<scenes.size(); ++i) + { + Polaroid& cam = mycams[i]; + + string basename(scenes[i]); + if (basename.find_last_of(".") != string::npos) + basename = basename.substr(0, basename.find_last_of(".")); + + m_photo->make_new(basename+"-polaroid", cam.width(), cam.height()); + cam.capture(*m_cartridge, *m_photo); + + if (isroot) + printf("[Photo Progress %3.1f %%]\n", static_cast<double>(i)/scenes.size()*100.0); + } +} diff --git a/apps/polaroidCamera/SceneProcessor.h b/apps/polaroidCamera/SceneProcessor.h @@ -0,0 +1,37 @@ +// File : SceneProcessor.h +// Date : Thu 28 Apr 2016 05:08:33 PM CEST +// Author : Fabian Wermelinger +// Description: Scene Processing +// Copyright 2016 ETH Zurich. All Rights Reserved. +#ifndef SCENEPROCESSOR_H_UWGYBVIW +#define SCENEPROCESSOR_H_UWGYBVIW + +#include <string> +#include <vector> + +#include "ArgumentParser.h" +#include "Polaroid.h" +#include "Cartridges.h" +#include "PhotoFormats.h" + +class SceneProcessor +{ +private: + ArgumentParser& m_parser; + Cartridge* m_cartridge; + PhotoPaper* m_photo; + + // helper + void _set_cartridge(); + void _set_paper(); + void _load_cam(Polaroid& cam, const char* const fname) const; + +public: + SceneProcessor(ArgumentParser& parser) : m_parser(parser), m_cartridge(nullptr), m_photo(nullptr) {} + ~SceneProcessor() {} + + void process1212(const std::vector<char*>& scenes, const bool isroot=true); + void process1122(const std::vector<char*>& scenes, const bool isroot=true); +}; + +#endif /* SCENEPROCESSOR_H_UWGYBVIW */