问题描述:每天学习和记录一个过滤
代码:
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 小于等于