【发布时间】:2013-12-07 09:28:13
【问题描述】:
我刚开始使用出色的点云库,想在一个查看器中显示两个点云,但每个点云的颜色不同。
当我使用一个点云对象(指针?!)时,它工作得很好,但如果我想添加第二个,则只有第二个会显示在查看器中。
我使用的是 pcl 1.6 版,并且非常像 tutorial 中的那样。
也许你们有一个建议。
相关代码sn-p如下。先谢谢了!!!
boost::shared_ptr<pcl::visualization::PCLVisualizer> viewer_two_clouds (new pcl::visualization::PCLVisualizer("3D Viewer"));
viewer_two_clouds->setBackgroundColor(0,0,0);
// cloud: green / cloud2: red
pcl::visualization::PointCloudColorHandlerCustom<pcl::PointXYZRGB> single_color1 (cloud, 0, 255, 0);
pcl::visualization::PointCloudColorHandlerCustom<pcl::PointXYZRGB> single_color2 (cloud2, 255, 0, 0);
//add both
viewer_two_clouds->addPointCloud<pcl::PointXYZRGB> (cloud, single_color1, "sample_cloud_1");
viewer_two_clouds->addPointCloud<pcl::PointXYZRGB> (cloud2, single_color2, "sample_cloud_2");
// set coordinateSystem and init camera
viewer_two_clouds->addCoordinateSystem(1.0);
viewer_two_clouds->initCameraParameters();
while(!viewer_two_clouds->wasStopped())
{
viewer_two_clouds->spinOnce();
boost::this_thread::sleep (boost::posix_time::microseconds(100000));
}
viewer_two_clouds->close();
【问题讨论】:
-
您是否检查过您没有加载相同的
PCD? -
我实际上只加载了一个 pcd,但我正在复制它并将它移动到距离另一个点云 10 米的地方。 copyPointCloud(*cloud, *cloud2);/ 复制后我做cloud2->sensor_origin_ = p;
-
好的。然后,尝试加载文件两次,而不是复制。我认为这不会解决它,但以防万一......
-
嗯,不……那也不会。在调试时,我注意到 cloud2 对象中的点在执行 cloud2->sensor_origin_ = p 时立即消失。是否有另一种移动现有云的方法?
标签: c++ point-cloud-library point-clouds