美文网首页
PCL手记(壹)——PCD文件读取

PCL手记(壹)——PCD文件读取

作者: 屠夫猫 | 来源:发表于2018-09-21 10:54 被阅读385次

    Author: 琅琊土肥圆
    E-mail: wt_lor@163.com
    Date: 2018-09-21

    PCL(Point Cloud Library)全称点云库,用于处理LIDAR设备生成的点云数据。截止至本文档的完成之日(2018-09-21),市场主流的LIDAR设备为Velodyne公司提供的。本文基于的设备是Velodyne的16线设备,属于入门级的低密度LIDAR设备。

    闲言少叙,进入正题。本文是PCL手记的首作,自然而然的要讲讲如何打开一个pcd文件——保存点云数据的文件,其具体格式可到这里详细了解。具体代码如下所示。

    /* pcd_read.cpp */
    
    #include <iostream>
    #include <pcl/io/pcd_io.h>
    #include <pcl/point_types.h>
    
    int main(int argc, char **argv)
    {
      pcl::PointCloud<pcl::PointXYZ>::Ptr cloud(new pcl::PointCloud<pcl::PointXYZ>);
      pcl::PCDReader reader;
    
      reader.read<pcl::PointXYZ>("filename.pcd", *cloud);
    
      return 0;
    }
    

    逐条解释一下上面的源码。

    #include <pcl/io/pcd_io.h>
    #include <pcl/point_types.h>

    这两行引入pcl的io内容以及点云类型(point_types),本例中使用的点云点因为不含有色彩信息,所以其类型为pcl::PointXYZ。有的LIDAR生成的点云点带有色彩信息,其类型应该为pcl::PointXYZI(带有灰度信息)和/或pcl::PointXYZRGB(带有色彩信息)。

    pcl::PointCloud<pcl::PointXYZ>::Ptr cloud(new pcl::PointCloud<pcl::PointXYZ>);
    pcl::PCDReader reader;
    reader.read<pcl::PointXYZ>("filename.pcd", *cloud)

    第一行定义一个PointCloud数据结构变量,用于暂存(hold)pcd文件中的点云数据,通过其子域points可以对点云中的点进行 访问(access)。
    第二行定义一个PCDReader的对象,用于读取pcd文件。
    第三行读取pcd文件。

    由于PCL库大量使用了模板编程,所以需要读者对于C++的模板编程比较了解,包括模板函数与模板类。

    接下来说明,如何编译前述源文件。由于本身PCL比较庞大,有很多模块——类似于OpenCV库,所以编译使用此类库的源文件时,建议使用cmake,而非带有-L以及-I选项的clang++或者g++。具体的编译文件如下所示,CMakeLists.txt。

    cmake_minimum_required(VERSION 3.0)
    
    project(pcd_read)
    
    find_package(
      PCL 1.2 REQUIRED
    )
    
    include_directories(${PCL_INCLUDE_DIRS})
    link_directories(${PCL_LIBRARY_DIRS})
    
    add_executable(pcd_read ./pcd_read.cpp)
    target_link_libraries(pcd_read ${PCL_LIBRARIES})
    

    将该CMakeLists.txt文件和pcd_read.cpp放在同一目录下,在命令行终端运行
    $ cmake CMakeLists.txt
    即可生成Makefile文件,然后运行
    $ make
    即可生成可运行文件pcd_read。

    相关文章

      网友评论

          本文标题:PCL手记(壹)——PCD文件读取

          本文链接:https://www.haomeiwen.com/subject/pjtanftx.html