Skip to content
Snippets Groups Projects
Select Git revision
  • dfb518d308796483fe2c8a6066c7f5c8fc64872b
  • master default protected
  • opencv4
  • custom_realsense
  • deproject
  • camera
6 results

sandbox.cpp

Blame
  • 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);
    }