Newer
Older
#include "colour.hpp"
#include <loguru.hpp>

Sebastian Hahta
committed
#include <opencv2/opencv.hpp>
#include <Eigen/Eigen>
#include <opencv2/core/eigen.hpp>

Sebastian Hahta
committed
using namespace ftl::rgbd;

Sebastian Hahta
committed
using std::string;

Sebastian Hahta
committed
SnapshotSource::SnapshotSource(ftl::rgbd::Source *host, Snapshot &snapshot, const string &id) : detail::Source(host) {
snapshot_ = snapshot;
camera_idx_ = std::atoi(id.c_str());
frame_idx_ = 0;
Eigen::Matrix4d pose;
snapshot.getPose(camera_idx_, pose);
params_ = snapshot.getParameters(camera_idx_);
ftl::rgbd::colourCorrection(rgb_, host->value("gamma", 1.0f), host->value("temperature", 6500));
host->on("gamma", [this,host](const ftl::config::Event&) {
ftl::rgbd::colourCorrection(rgb_, host->value("gamma", 1.0f), host->value("temperature", 6500));
});
// Add calibration to config object
host_->getConfig()["focal"] = params_.fx;
host_->getConfig()["centre_x"] = params_.cx;
host_->getConfig()["centre_y"] = params_.cy;
host_->getConfig()["baseline"] = params_.baseline;
host_->on("focal", [this](const ftl::config::Event &e) {
params_.fx = host_->value("focal", params_.fx);
params_.fy = params_.fx;
});
host_->on("centre_x", [this](const ftl::config::Event &e) {
params_.cx = host_->value("centre_x", params_.cx);
});
host_->on("centre_y", [this](const ftl::config::Event &e) {
params_.cy = host_->value("centre_y", params_.cy);
});

Sebastian Hahta
committed
}
bool SnapshotSource::compute(int n, int b) {
snapshot_.getLeftRGB(camera_idx_, frame_idx_, snap_rgb_);
snapshot_.getLeftDepth(camera_idx_, frame_idx_, snap_depth_);
snap_rgb_.copyTo(rgb_);
snap_depth_.copyTo(depth_);
frame_idx_ = (frame_idx_ + 1) % snapshot_.getFramesCount();