点云、PCL学习

本指南详细介绍了PCL(Point Cloud Library)的安装、配置及应用过程,包括使用VSCode编译C++,通过cmake搭建PCL工程,以及如何过滤、可视化和转换点云数据。此外,还探讨了点云在自动驾驶领域的研究现状。

1. 安装

忘记了

2. 测试pcl是否安装成功

3.PCL的学习过程

  1. vscode编译c++
  2. cmake教程
  3. CMake入门之创建一个基于PCL的最小工程
  4. PCL ——CropBox 过滤掉用户给定立方体内的点云数据
  5. pcl 可视化 .pcd文件

安装pcl

    sudo add-apt-repository ppa:v-launchpad-jochen-sprickerhof-de/pcl
    sudo apt-get update
    sudo apt-get install libpcl-all

安装成功后,打开需要查看文件的路径,输入

pcl_viewer xxx.pcd
  1. 点云数据bin格式转换为pcd格式的方法

4.点云

  1. 点云学习在自动驾驶中的研究概述
  2. pointnet 论文 代码
点云库(PCL)是专门用于三维点云数据处理的开源C++库,有丰富的实战案例及教程。 ### 教程 《PCL点云库完全教程:从基础到实战应用》详细介绍了PCL的核心功能及其实际应用方法,适合研究者和开发者学习和深入理解三维点云处理技术。通过该教程,读者能系统掌握PCL的使用,并应用于机器人导航、无人机避障、三维重建等多个领域。教程包含PCL库简介与跨平台支持等内容,对PCL库进行了概述 [^1]。 ### 实战案例 - **条件移除点云数据**:创建`pcl::ConditionAnd<pcl::PointXYZ>::Ptr`对象`range_cond`,用于存储多个条件组合。添加条件,例如点的z坐标必须在 0.0 到 1.0 之间,使用`pcl::FieldComparison`来指定字段、比较操作和阈值。创建`pcl::ConditionalRemoval<pcl::PointXYZ>`对象`condrem`,并将条件`range_cond`应用于输入点云。设置`setKeepOrganized(true)`可保持点云的有序性,即使一些点被移除 [^2]。以下是示例代码: ```cpp #include <pcl/point_types.h> #include <pcl/filters/conditional_removal.h> int main () { pcl::PointCloud<pcl::PointXYZ>::Ptr cloud (new pcl::PointCloud<pcl::PointXYZ>); // 填充点云数据 pcl::ConditionAnd<pcl::PointXYZ>::Ptr range_cond (new pcl::ConditionAnd<pcl::PointXYZ> ()); range_cond->addComparison (pcl::FieldComparison<pcl::PointXYZ>::ConstPtr (new pcl::FieldComparison<pcl::PointXYZ> ("z", pcl::ComparisonOps::GT, 0.0))); range_cond->addComparison (pcl::FieldComparison<pcl::PointXYZ>::ConstPtr (new pcl::FieldComparison<pcl::PointXYZ> ("z", pcl::ComparisonOps::LT, 1.0))); pcl::ConditionalRemoval<pcl::PointXYZ> condrem; condrem.setCondition (range_cond); condrem.setInputCloud (cloud); condrem.setKeepOrganized(true); pcl::PointCloud<pcl::PointXYZ>::Ptr cloud_filtered (new pcl::PointCloud<pcl::PointXYZ>); condrem.filter (*cloud_filtered); return 0; } ``` - **ISS点云配准**:在`pcl::ISSKeypoint3D<pcl::PointXYZ, pcl::PointXYZ>`对象`iss`中进行相关设置。设置输入点云,设置用于计算协方差矩阵的球形半径(一般为`5 * resolution`),设置非极大值抑制应用的算法半径(一般为`2.5 * resolution`),设置特征值比例阈值(如`0.975`),设置应用非极大值抑制时的最小邻居数量(防止出现孤立点) [^3]。示例代码如下: ```cpp #include <pcl/point_types.h> #include <pcl/keypoints/iss_3d.h> int main () { pcl::PointCloud<pcl::PointXYZ>::Ptr source (new pcl::PointCloud<pcl::PointXYZ>); // 填充源点云数据 float resolution = 0.1; pcl::ISSKeypoint3D<pcl::PointXYZ, pcl::PointXYZ> iss; iss.setInputCloud (source); iss.setSalientRadius (5 * resolution); iss.setNonMaxRadius (2.5 * resolution); iss.setThreshold21 (0.975); iss.setThreshold32 (0.975); iss.setMinNeighbors (5); pcl::PointCloud<pcl::PointXYZ>::Ptr keypoints (new pcl::PointCloud<pcl::PointXYZ>); iss.compute (*keypoints); return 0; } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值