Select Git revision
cours_23.md
sandbox.cpp 1.70 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
*/
void Sandbox::init(){
camera->start();
}
void Sandbox::captureFrame(){
camera->capture();
}
cv::Mat Sandbox::getColorFrame(){
return camera->getColorFrame()(camera->getCroppingMask());
}
cv::Mat Sandbox::getDepthFrame(){
return camera->getDepthFrame()(camera->getCroppingMask());
}
cv::Mat Sandbox::adjustProjection(cv::Mat frame){
captureFrame();
cv::Mat depth = getDepthFrame();
cv::Mat imageCalibrate = cv::Mat(cv::Size(beamer->getWidth(), beamer->getHeight()), CV_8UC3, cv::Scalar(0, 0, 0));
projection->adjustFrame(depth, frame, imageCalibrate, camera, beamer->getPosition());
// frame after process
//cv::dilate(imageCalibrate, imageCalibrate, cv::Mat(), cv::Point(-1, -1), 2, 1, 1);
//cv::erode(imageCalibrate, imageCalibrate, cv::Mat(), cv::Point(-1, -1), 2, 1, 1);
return imageCalibrate;
}
int Sandbox::loadConfigFrom(char *path){
int err = SandboxConfig::loadAdjustingMatrixFrom(path, projection);
if(err){ return err; }
err = SandboxConfig::loadDistanceToSandboxTop(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 loadConfigFrom(defaultConfigFilePath);
}