从 pcl::PointCloud<pcl::PointXYZRGB> 中删除点

新手上路,请多包涵

我是 PCL 的新手。我正在使用 PCL 库,并且正在寻找一种从点云中提取点或将特定点复制到新点的方法。我想验证每个点是否符合条件,并且我想获得一个只有好的点的点云。谢谢!

原文由 mrx 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 2.1k
1 个回答

使用 ExtractIndices 类:

  • 将要删除的点添加到 PointIndices 变量中
  • 将这些索引传递给 ExtractIndices
  • “负面”运行 filter() 方法以获取原始云减去您的积分

例子:

   pcl::PointCloud<pcl::PointXYZ>::Ptr p_obstacles(new pcl::PointCloud<pcl::PointXYZ>);
  pcl::PointIndices::Ptr inliers(new pcl::PointIndices());
  pcl::ExtractIndices<pcl::PointXYZ> extract;
  for (int i = 0; i < (*p_obstacles).size(); i++)
  {
    pcl::PointXYZ pt(p_obstacles->points[i].x, p_obstacles->points[i].y, p_obstacles->points[i].z);
    float zAvg = 0.5f;
    if (abs(pt.z - zAvg) < THRESHOLD) // e.g. remove all pts below zAvg
    {
      inliers->indices.push_back(i);
    }
  }
  extract.setInputCloud(p_obstacles);
  extract.setIndices(inliers);
  extract.setNegative(true);
  extract.filter(*p_obstacles);

原文由 Wolfgang Schulz 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题