【问题标题】:PCL Color FilterPCL 彩色滤光片
【发布时间】:2020-02-01 02:46:52
【问题描述】:

我想过滤掉点云中具有特定 'r' 值的点。

我查看了文档,发现 pcl/filters/color.h 在 PCL 1.7 及更高版本中不再可用,这令人费解。 (http://docs.pointclouds.org/1.3.1/classpcl_1_1_color_filter.html)。

我可能可以用一个简单的 for 循环来做到这一点,但想知道是否有一种方法可以使用传递过滤条件,因为这可能是多线程的。

【问题讨论】:

    标签: point-cloud-library point-clouds


    【解决方案1】:

    我最终使用了 conditional_removal,有一个针对 RGB 的模板专门化。这是一个 sn-p,我们得到一个名为 cloud_msg 的 ROS 点云。

     #include <pcl/filters/conditional_removal.h> //and the other usuals
    
     pcl::PointCloud<pcl::PointXYZRGB>::Ptr rgb_cloud(new pcl::PointCloud<pcl::PointXYZRGB>);
     pcl::PointCloud<pcl::PointXYZRGB>::Ptr cloud_filtered(new pcl::PointCloud<pcl::PointXYZRGB>);
     pcl::fromROSMsg(*cloud_msg, *rgb_cloud);
     pcl::PCLPointCloud2 cloud_filtered_ros;
    
     pcl::ConditionalRemoval<pcl::PointXYZRGB> color_filter;
    
     pcl::PackedRGBComparison<pcl::PointXYZRGB>::Ptr
         red_condition(new pcl::PackedRGBComparison<pcl::PointXYZRGB>("r", pcl::ComparisonOps::GT, 90));
     pcl::ConditionAnd<pcl::PointXYZRGB>::Ptr color_cond (new pcl::ConditionAnd<pcl::PointXYZRGB> ());
     color_cond->addComparison (red_condition);
    
     // Build the filter
     color_filter.setInputCloud(rgb_cloud);
     color_filter.setCondition (color_cond);
     color_filter.filter(*cloud_filtered)
    

    【讨论】:

      猜你喜欢
      • 2013-07-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-11-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-09-01
      相关资源
      最近更新 更多