这个教程学习如何使用简单的滤波器,沿着指定维,过滤掉指定范围内外的值。
#include <iostream>#include <pcl/point_types.h>#include <pcl/filters/passthrough.h>int main (int argc, char** argv){ pcl::PointCloud<pcl::PointXYZ>::Ptr cloud (new pcl::PointCloud<pcl::PointXYZ>); pcl::PointCloud<pcl::PointXYZ>::Ptr cloud_filtered (new pcl::PointCloud<pcl::PointXYZ>); // Fill in the cloud data cloud->width = 5; cloud->height = 1; cloud->points.resize (cloud->width * cloud->height); for (size_t i = 0; i < cloud->points.size (); ++i) { cloud->points[i].x = 1024 * rand () / (RAND_MAX + 1.0f); cloud->points[i].y = 1024 * rand () / (RAND_MAX + 1.0f); cloud->points[i].z = 1024 * rand () / (RAND_MAX + 1.0f); } std::cerr << "Cloud before filtering: " << std::endl; for (size_t i = 0; i < cloud->points.size (); ++i) std::cerr << " " << cloud->points[i].x << " " << cloud->points[i].y << " " << cloud->points[i].z << std::endl; // Create the filtering object pcl::PassThrough<pcl::PointXYZ> pass; pass.setInputCloud (cloud); pass.setFilterFieldName ("z"); pass.setFilterLimits (0.0, 1.0); //pass.setFilterLimitsNegative (true); pass.filter (*cloud_filtered); std::cerr << "Cloud after filtering: " << std::endl; for (size_t i = 0; i < cloud_filtered->points.size (); ++i) std::cerr << " " << cloud_filtered->points[i].x << " " << cloud_filtered->points[i].y << " " << cloud_filtered->points[i].z << std::endl; return (0);}
一步一步来分析这些代码。
首先,我们创建一个PointCloud,填充数据。
然后创建一个直通滤波器并且设置参数。过滤器字段的名字设置为“Z”,接受的区间值设置为(0.0, 1.0);
即:保留z轴上z值为0.0-1.0之间的值的点,其他点均过滤掉。
运行程序,你会看到类似如下的结果。
Cloud before filtering: 0.352222 -0.151883 -0.106395 -0.397406 -0.473106 0.292602 -0.731898 0.667105 0.441304 -0.734766 0.854581 -0.0361733 -0.4607 -0.277468 -0.916762Cloud after filtering: -0.397406 -0.473106 0.292602 -0.731898 0.667105 0.441304
分享到:
相关推荐
在本话题中,我们将深入探讨如何利用PCL(Point Cloud Library)中的直通滤波器和统计滤波器对点云数据进行滤波。 首先,PCL是一个开源的C++库,专门设计用于处理3D点云数据,提供了一系列工具和算法,包括点云的...
PointCloudLibrary安装包调试包,版本PCL-1.11.1,包括安装包和调试包,包括(Boost,Eigen,FLANN,OpenNI2,Qhull,VTK)还包括调试PointCloudLibrary源码的调试包
The Point Cloud Library (or PCL) is a large scale, open project for point cloud processing. The PCL framework contains numerous state-of-the art algorithms including filtering, feature estimation, ...
用途:livox的HAP雷达点云msg格式转pointcloud2格式,rviz查看点云需要pointcloud2格式。所以如果你想用rviz查看livox设备的点云,就需要这个包来将默认的msg格式点云,转换一下,变成pointcloud2格式,就可以在rviz...
本教程将深入探讨如何在MATLAB中操作和可视化三维彩色点云,特别是使用PLY格式的数据。 首先,PLY(Polygon File Format)是一种用于存储3D几何模型的文件格式,包括点云和多边形网格。它支持多种数据类型,如...
点云处理库Point Cloud Library(PCL)的官方API问道,包含论文《3D is here: Point Cloud Library (PCL)》
点云库(PointCloudLibrary,简称PCL)是一个开源的C++点云处理框架,专注于三维点云数据的处理、分析和可视化。在本主题中,我们将深入探讨如何使用PCL来加载PCD(Point Cloud Data)文件,并自定义点云的颜色。PCD...
在使用"pglira-Point_cloud_tools_for_Matlab-7a56212"这个工具包时,用户应首先了解其提供的函数和类,然后根据项目需求选择合适的方法。在处理大型点云时,优化和并行计算也是关键,以确保计算效率。同时,结合...
PCL(Point Cloud Library)点云库 个人开发环境:Ubuntu18.04
在C++中,处理点云数据可能需要用到如PCL(Point Cloud Library)这样的专业库,但根据文件名,这个实现可能没有依赖外部库,而是利用了C++的基础数据结构和算法。 在"judian.cpp"中,我们可能会看到读取"terrain2....
点云库 (PCL) 是一个独立的、大规模的、开放的 2D/3D 图像和点云处理项目。 PCL 根据 BSD 许可条款发布,因此可免费用于商业和研究用途。 我们得到了 Open Perception、Willow Garage、NVIDIA、Google、Toyota、...
基于OSG的点云绘制程序,附上点云数据样式文件
- **点云数据结构**:`sensor_msgs/PointCloud2`消息格式包含点云数据的元信息(如坐标系、时间戳等)和实际的点云数据。每个点通常包含X、Y、Z坐标,以及可能的颜色、法线、强度等额外信息。 - **点云处理库**:...
【$P Point-Cloud Recognizer】点云手势识别技术是一种创新的人机交互方式,尤其在游戏和虚拟现实领域中有着广泛的应用。该技术基于点云数据处理,通过识别用户手势来实现对系统的控制或交互。点云数据是通过深度...
在本资源"cloud-point.zip"中,包含了一个名为"未命名1.cpp"的C++源代码文件,该文件利用OpenCV和PCL(Point Cloud Library)库来处理点云数据。下面将详细介绍这些知识点。 1. **点云(Points Cloud)**:点云是由...
使用真实数据和合成数据对点云的下水道缺陷进行分类。这是下水道和缺陷的3D数据的第一个公开可用的数据集。数据集的大部分由合成数据组成,而真实管道的点云是在丹麦奥尔堡大学的实验室环境中记录的。 AAU Sewer ...
同时,MATLAB还可以与其他工具如PCL(Point Cloud Library)或OpenCV集成,进一步增强点云处理的功能。 压缩包中的"点云重建三角网格最新.doc"文档很可能是详细教程或研究论文,涵盖了点云处理的具体步骤、算法实现...
点云库(PointCloudLibrary, 简称PCL)是一个开源的C++库,专门用于处理3D点云数据。在3D计算机视觉和机器人领域,PCL扮演着至关重要的角色,因为它提供了丰富的算法和工具,用于点云的获取、过滤、分割、特征提取、...
PCL(Point Cloud Library)是在吸收了前人点云相关研究基础上 建立起来的大型跨平台开源C++编程库, 它实现了大量点云相关的通用算法和高效数据结构, 涉及到 点云获取、 滤波、 分割、 配准、 检索、 ...