diff --git a/components/rgbd-sources/src/net.cpp b/components/rgbd-sources/src/net.cpp index 0ce3b1fa2e99396c734dc9838d161d2c8c1d5f64..39e03985407212561a702d6a8d002846ba774254 100644 --- a/components/rgbd-sources/src/net.cpp +++ b/components/rgbd-sources/src/net.cpp @@ -62,13 +62,17 @@ NetSource::~NetSource() { } void NetSource::_recv(const vector<unsigned char> &jpg, const vector<unsigned char> &d) { - unique_lock<shared_mutex> lk(host_->mutex()); + cv::Mat tmp_rgb, tmp_depth; auto start = std::chrono::high_resolution_clock::now(); - cv::imdecode(jpg, cv::IMREAD_COLOR, &rgb_); + cv::imdecode(jpg, cv::IMREAD_COLOR, &tmp_rgb); //Mat(rgb_.size(), CV_16UC1); - cv::imdecode(d, cv::IMREAD_UNCHANGED, &depth_); - depth_.convertTo(depth_, CV_32FC1, 1.0f/(16.0f*100.0f)); + cv::imdecode(d, cv::IMREAD_UNCHANGED, &tmp_depth); + + unique_lock<shared_mutex> lk(host_->mutex()); + rgb_ = tmp_rgb; + tmp_depth.convertTo(depth_, CV_32FC1, 1.0f/(16.0f*100.0f)); + lk.unlock(); std::chrono::duration<double> elapsed = std::chrono::high_resolution_clock::now() - start;