point-cloud-library - PCL 彩色滤光片
问题描述
我想过滤掉具有一定“r”值的点云中的点。
我查看了文档,发现 pcl/filters/color.h 在 PCL 1.7 及更高版本中不再可用,这令人费解。(http://docs.pointclouds.org/1.3.1/classpcl_1_1_color_filter.html)。
我可能可以用一个简单的 for 循环来做到这一点,但想知道是否有一种方法可以使用直通过滤条件,因为这可能是多线程的。
解决方案
我最终使用了 conditional_removal,RGB 有一个模板专业化。这是一个片段,其中我们得到了一个名为 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)
推荐阅读
- javascript - 删除嵌套数组Angular 2/4中的对象行
- java - 为什么同步功能不阻止进入?(JAVA)
- scala - 在 firrtl 中的 AND 操作中没有符号扩展
- google-cloud-dataflow - DataflowPipelineOptions:在 arg 解析后使用 .setRunner 显式设置运行器
- git - 提交后挂钩中的“git send-email”不适用于 Github Desktop
- python - Pyro4:反序列化 protobuf 类
- android - Recyclerview 仅第一次显示数据
- asynchronous - Google AppMaker 中的异步函数
- scala - 从嵌套类型获取子类型
- regex - 如何从电子邮件正文中复制特定文本?