我刚刚开始使用大点云库,想要在一个查看器中显示两个点云,但是每个点云都使用不同的颜色。

当我使用一个点云对象(指针?!)时,它工作得很好,但是如果我要添加第二个云对象,则仅第二个对象将显示在查看器中。

我正在使用pcl 1.6版,并且非常类似于此tutorial
也许你们有建议。

相关代码段如下。提前致谢!!!

  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();

最佳答案

为了将转换(例如旋转和平移)应用于已经加载的点云,您应该使用pcl::transformPointCloud函数(see here)。此函数接受3个参数:输入云,输出云和Eigen::Transform。只需定义翻译转换并将其输入到函数中即可正确翻译您的云。

有一个不错的Eigen教程(here),向您展示了如何定义和使用空间转换。

关于c++ - 将两个不同的点云添加到查看器(点云库(PCL)),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20145899/

10-12 20:40