-
simon.fanetti authoredsimon.fanetti authored
sandbox.cpp 1.93 KiB
#include "../../inc/sandbox.h"
/*
* MAIN
*/
Sandbox::Sandbox(){
projection = new Projection();
camera = new Camera();
beamer = new Beamer();
}
Sandbox::~Sandbox(){
delete beamer;
delete camera;
delete projection;
}
/*
* PUBLIC
*/
int Sandbox::init(){
return camera->start();
}
void Sandbox::captureFrame(){
camera->capture();
}
cv::Mat_<cv::Vec3b> Sandbox::getColorFrame(){
return camera->getColorFrame()(camera->getCroppingMask());
}
cv::Mat_<float> Sandbox::getDepthFrame(){
return camera->getDepthFrame()(camera->getCroppingMask());
}
cv::Mat_<cv::Vec3b> Sandbox::adjustProjection(cv::Mat_<cv::Vec3b> &frame, cv::Mat_<float> &depth){
if(projectedFrame.empty()){
projectedFrame.create(beamer->getHeight(), beamer->getWidth());
}
projectedFrame = cv::Vec3b(0, 0, 0);
projection->adjustFrame(depth, frame, projectedFrame, camera, beamer->getPosition());
// frame after process
//cv::dilate(projectedFrame, projectedFrame, cv::Mat(), cv::Point(-1, -1), 2, 1, 1);
//cv::erode(projectedFrame, projectedFrame, cv::Mat(), cv::Point(-1, -1), 2, 1, 1);
return projectedFrame;
}
cv::Mat_<cv::Vec3b> Sandbox::adjustProjection(cv::Mat_<cv::Vec3b> &frame){
captureFrame();
cv::Mat_<float> depth = getDepthFrame();
return adjustProjection(frame, depth);
}
int Sandbox::loadConfig(char *path){
int err = SandboxConfig::loadAdjustingMatrixFrom(path, projection);
if(err){ return err; }
err = SandboxConfig::loadDistanceToSandboxTopFrom(path, projection);
if(err){ return err; }
err = SandboxConfig::loadCroppingMaskFrom(path, camera);
if(err){ return err; }
err = SandboxConfig::loadBeamerResolutionFrom(path, beamer);
if(err){ return err; }
err = SandboxConfig::loadBeamerPositionFrom(path, beamer);
if(err){ return err; }
return 0;
}
int Sandbox::loadConfig(){
return loadConfig(defaultConfigFilePath);
}