PCL-条件过滤

问题描述:每天学习和记录一个过滤

代码:

void condition_filiter(pcl::PointCloud<pcl::PointXYZ>::Ptr cloud1){
    //创建条件
    pcl::ConditionAnd<pcl::PointXYZ>::Ptr condition_add(new pcl::ConditionAnd<pcl::PointXYZ>());
    condition_add->addComparison(pcl::FieldComparison<pcl::PointXYZ>::ConstPtr
    (new pcl::FieldComparison<pcl::PointXYZ>("z", pcl::ComparisonOps::GT, 10)));
    // 创建ConditionalRemoval对象
    pcl::ConditionalRemoval<pcl::PointXYZ> condition;
    condition.setCondition(condition_add);// 设置条件对象
    condition.setInputCloud(cloud1);
    condition.setKeepOrganized(false);//如果设置为true,则保留点云中被滤掉的点,否则删除
    condition.filter(*cloud1);
    pcl::io::savePCDFileBinary("/home/wxw/filiter_cloud/condition.pcd", *cloud1);
}

代码解释

condition_add->addComparison(pcl::FieldComparison<pcl::PointXYZ>::ConstPtr
    (new pcl::FieldComparison<pcl::PointXYZ>("z", pcl::ComparisonOps::GT, 10)));
这个条件指的是,Z轴上大于10。

  • EQ 就是 EQUAL等于

  • NE就是 NOT EQUAL不等于

  • GT 就是 GREATER THAN大于 

  • LT 就是 LESS THAN小于

  • GE 就是 GREATER THAN OR EQUAL 大于等于

  • LE 就是 LESS THAN OR EQUAL 小于等于

猜你喜欢

转载自blog.csdn.net/m0_51650696/article/details/143212807
今日推荐