c++ - 从 pcl::PointCloud<pcl::PointXYZRGB> 中删除点

标签 c++ ros point-cloud-library point-clouds

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

最佳答案

使用 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);

关于c++ - 从 pcl::PointCloud<pcl::PointXYZRGB> 中删除点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44921987/

相关文章:

c++ - Qt 将代码从 Linux 迁移到 Windows

c++ - openmpi 编译器之间有什么区别?

c++ - CMake 无法确定目标的链接器语言

opencv - 为什么与我的ToF传感器平行的对象在点云中看起来不平行?

c++ - 具有引用模板参数的函数模板

python - 在 Arch Linux ARM 中编译 ros-indigo-qt-gui-cpp 时出现的问题

ubuntu - 在 Ubuntu 上安装 ROS

javascript - 从带有回调参数的函数中获取值

c++ - 无法从 Windows 中的 pclvisualizer 中删除点云,尽管它在 Linux 中有效

c++ - 如何从视点特征直方图进行3D物体识别的训练和匹配?