c++ - How can I make a point cloud shared? -
i'm working on kinect v2
, grabber run it. encountered problems wanting write cloud information on pcd
. @ code:
int main(int argc, char* argv[]) { boost::shared_ptr<pcl::visualization::pclvisualizer> viewer(new pcl::visualization::pclvisualizer("point cloud viewer")); viewer->registerkeyboardcallback(&keyboard_callback, "keyboard"); viewer->registermousecallback(&mouse_callback, "mouse"); pcl::pointcloud<pcl::pointxyzrgb>::constptr cloud; boost::function<void(const pcl::pointcloud<pcl::pointxyzrgb>::constptr&)> function = [&cloud](const pcl::pointcloud<pcl::pointxyzrgb>::constptr &ptr){ boost::mutex::scoped_lock lock(mutex); cloud = ptr; }; pcl::grabber* grabber = new pcl::kinect2grabber(); boost::signals2::connection connection = grabber->registercallback(function); grabber->start(); while (!viewer->wasstopped()){ viewer->spinonce(); if (cloud){ if (!viewer->updatepointcloud(cloud, "cloud")){ viewer->addpointcloud(cloud, "cloud"); viewer->resetcameraviewpoint("cloud"); } } if (getkeystate(vk_escape) < 0){ break; } } grabber->stop(); return 0; }
the cloud pointer boost function must const
(i don't know sure). hence can't share cloud.makeshared()
function , cloud->makeshared()
aborted throwing exceptions. tried copy regular cloud did not work. can me how can write cloud on pcd
file?
Comments
Post a Comment