diff --git a/src/components/camera.cpp b/src/components/camera.cpp index 11b5984b6a97117fb8a641749efba5fe89a6ac34..4dc25d8abbfa30128a9c74dc42c5e651fef46880 100644 --- a/src/components/camera.cpp +++ b/src/components/camera.cpp @@ -33,8 +33,11 @@ Camera::~Camera(){ cv::Mat Camera::getDepthFrame(){ static cv::Mat values = cv::Mat(depth_frame->get_height(), depth_frame->get_width(), CV_16UC1); static cv::Mat meters = cv::Mat(depth_frame->get_height(), depth_frame->get_width(), CV_32FC1); - values.data = (uchar*)depth_frame->get_data(); - values.convertTo(meters, CV_32FC1, depth_scale); + uchar* new_values = (uchar*)depth_frame->get_data(); + if(values.data != new_values){ + values.data = new_values; + values.convertTo(meters, CV_32FC1, depth_scale); + } return meters.clone(); }; diff --git a/src/components/projection.cpp b/src/components/projection.cpp index 194fddd85074e75a415d88a0be9933465b5ab9e5..93bdd066a73b36b7729b59b596ff7ec9a633e334 100644 --- a/src/components/projection.cpp +++ b/src/components/projection.cpp @@ -33,12 +33,9 @@ cv::Point2i Projection::revertRotatePixel(cv::Point2i center, double angle, cv:: Adjust the projected frame with the topology from the camera to the beamer POV */ void Projection::adjustFrame(cv::Mat_<float> &depth, cv::Mat_<cv::Vec3b> &src, cv::Mat_<cv::Vec3b> &dst, Camera *camera, cv::Point3f beamer_pos){ - - // deallocate and reallocate buffers if 1st pass - // or dst.size changed, since for all buffers : - // buff.size == dst.size - // try + // update if dst.size changed, since for all buffers : + // buff.size == dst.size if(deprojectMap.size() != dst.size()){ std::vector<cv::Point2f> profil = camera->getAdaptedIntrinsics(dst); fxy = profil.at(0); @@ -50,25 +47,7 @@ void Projection::adjustFrame(cv::Mat_<float> &depth, cv::Mat_<cv::Vec3b> &src, c frameMap.create(dst.rows, dst.cols); resized_depth.create(dst.rows, dst.cols); resized_src.create(dst.rows, dst.cols); -/* - // default - if(deprojectMap.empty() || deprojectMap.size() != dst.size()){ - if(!deprojectMap.empty()){ - deprojectMap.release(); - frameMap.release(); - resized_depth.release(); - resized_src.release(); - } - deprojectMap.create(dst.rows, dst.cols); - frameMap.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); - ppxy = profil.at(1); - } -*/ deprojectMap = cv::Point2i(-1,-1); frameMap = cv::Point2i(-1,-1); diff --git a/src/lib/sandbox.cpp b/src/lib/sandbox.cpp index c0eeb6d79e4c78d8589b734d1716e0316a0f586c..bd551812e9b8881235a20ef84329eefb12154717 100644 --- a/src/lib/sandbox.cpp +++ b/src/lib/sandbox.cpp @@ -51,7 +51,7 @@ cv::Mat_<cv::Vec3b> Sandbox::adjustProjection(cv::Mat_<cv::Vec3b> &frame, cv::Ma //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; + return projectedFrame.clone(); } cv::Mat_<cv::Vec3b> Sandbox::adjustProjection(cv::Mat_<cv::Vec3b> &frame){