#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.clone(); } 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); }