diff --git a/inc/projection.h b/inc/projection.h index db6f922e6525aaba78a7889d4095d9c3d66259fa..a5ce9eb953310ca4d01e8cd9319ff49f64da1537 100644 --- a/inc/projection.h +++ b/inc/projection.h @@ -9,8 +9,9 @@ class Projection{ private: cv::Mat adjustingMatrix; float distanceTopSandbox; - // Buffer for the builded virtual frame, which is scaled to n * depth_frame.size for the building process - cv::Mat_<cv::Vec3b> resized_dst; + + cv::Mat_<float> resized_depth; + cv::Mat_<cv::Vec3b> resized_src; // Buffer containing the pixels's new location when deprojected to beamer's POV cv::Mat_<cv::Point2i> deprojectMap; // Buffer indicating from where to get the pixels in the source frame diff --git a/src/components/projection.cpp b/src/components/projection.cpp index d525da6022842620857c8dd0bde2fca4d0a0fe75..be3995350888a33a936de01118300a497891e0b5 100644 --- a/src/components/projection.cpp +++ b/src/components/projection.cpp @@ -36,11 +36,13 @@ void Projection::adjustFrame(cv::Mat_<float> depth, cv::Mat_<cv::Vec3b> src, cv: if(!deprojectMap.empty()){ deprojectMap.release(); frameMap.release(); - resized_dst.release(); + resized_depth.release(); + resized_src.release(); } deprojectMap.create(dst.rows, dst.cols); frameMap.create(dst.rows, dst.cols); - resized_dst.create(dst.rows, dst.cols); + resized_depth.create(dst.rows, dst.cols); + resized_src.create(dst.rows, dst.cols); std::vector<cv::Point2f> profil = camera->getAdaptedIntrinsics(dst); fxy = profil.at(0); @@ -49,18 +51,18 @@ void Projection::adjustFrame(cv::Mat_<float> depth, cv::Mat_<cv::Vec3b> src, cv: deprojectMap = cv::Point2i(-1,-1); frameMap = cv::Point2i(-1,-1); - resized_dst = cv::Vec3b(0,0,0); + resized_depth = 0.0f; + resized_src = cv::Vec3b(0,0,0); // resize to match 1:1 ratio with resized_dst, since we'll do later: // resized_dst[i] = src[i] - cv::resize(src, src, dst.size()); - cv::resize(depth, depth, dst.size()); + cv::resize(src, resized_src, dst.size()); + cv::resize(depth, resized_depth, dst.size()); - deprojectPixelsFromDepth(depth, camera, camera->getCroppingMask() , beamer_pos, deprojectMap, fxy, ppxy); - filterLowestDeprojectedPoints(depth, deprojectMap, frameMap); - buildFrame(depth, frameMap, src, resized_dst); + deprojectPixelsFromDepth(resized_depth, camera, camera->getCroppingMask() , beamer_pos, deprojectMap, fxy, ppxy); + filterLowestDeprojectedPoints(resized_depth, deprojectMap, frameMap); + buildFrame(resized_depth, frameMap, resized_src, dst); - cv::resize(resized_dst, dst, dst.size()); cv::warpAffine(dst, dst, adjustingMatrix, dst.size()); }