zoukankan      html  css  js  c++  java
  • 向PCD文件写入点云数据

    博客转载自:http://www.pclcn.org/study/shownews.php?lang=cn&id=83

    本小节我们学习如何向PCD文件写入点云数据。

    代码

    首先,在PCLPoint Cloud Learning)中国协助发行的书[1]提供光盘的第4章例2文件夹中,打开名为pcd_write.cpp的代码文件。

    解释说明

    现在,我们解析上面代码:

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

    pcl/io/pcd_io.h头文件中包含了PCD输入输出操作的声明,pcl/point_types.h头文件则包含一些PointT类型结构体的声明(本例中是pcl::PointXYZ)。

    pcl::PointCloud<pcl::PointXYZ>cloud;
    

    描述我们将要实例化的模板类PointCloud,每一个点的类型都被设置成pcl::PointXYZ,作为模板类实例化的参数,其他类型请参考点类型介绍一节,pcl::PointXYZ具体定义如下下面:

    // 点PointXYZ类型对应的数据结构
    Struct PointXYZ
    {
    floatx;
    floaty;
    floatz;
    };
    

    下面这几行:

    // 创建点云
    cloud.width=5;
    cloud.height=1;
    cloud.is_dense=false;
    cloud.points.resize(cloud.width*cloud.height);
    for(size_ti=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);
    }

    用随机点的值填充PointCloud点云对象,并设置适当的参数(widthheightis_dense)。然后:

    pcl::io::savePCDFileASCII("test_pcd.pcd",cloud);

    PointCloud对象数据存储在test_pcd.pcd文件中。最后:

    std::cerr<<"Saved "<<cloud.points.size()<<" data points to test_pcd.pcd."<<std::endl;
    for(size_ti=0;i<cloud.points.size();++i)
    std::cerr<<"    "<<cloud.points[i].x<<" "<<cloud.points[i].y<<" "<<cloud.points[i].z<<std::endl;

    上面几行代码用来打印输出存储的点云数据。

    编译并运行该程序

    利用光盘提供的CMakeLists.txt文件,在cmake中建立工程文件,并生成相应的可执行文件,生成可执行文件之后,就可以运行了,在cmd中使用以下命令:

    ...>pcd_write.exe
    

    将在cmd界面看到类似下面的东西:

    1 点云写入例子运行结果 

    Linux下用户可以方便的用下面的命令检查test_pcd.pcd文件的内容,在window上的用户直接用一般的word等就可以对pcd文件进行打开(只限于0.7版本的,低版本的打开显示不完整)。

    $ cattest_pcd.pcd
    # .PCD v.5 - Point Cloud Data file format
    FIELDS x y z
    SIZE 4 4 4
    TYPE F FF
    WIDTH 5
    HEIGHT 1
    POINTS 5
    DATA ascii
    0.35222 -0.15188 -0.1064
    -0.39741 -0.47311 0.2926
    -0.7319 0.6671 0.4413
    -0.73477 0.85458 -0.036173
    -0.4607 -0.27747 -0.91676
    

     

    敬请关注PCLPoint Cloud Learning)中国更多的点云库PCLPoint Cloud Library)相关官方教程。

    参考文献:

    1.朱德海、郭浩、苏伟.点云库PCL学习教程(ISBN 978-7-5124-0954-5)北京航空航天出版社 2012-10

     

     

  • 相关阅读:
    罗马数字加法实现Roman Calculator
    etymology-E
    Unreal里的输入
    Laravel框架怎样使用阿里云ACE缓存服务
    log4j和logback会互相冲突
    log4j和logback会互相冲突
    log4j和logback会互相冲突
    log4j和logback会互相冲突
    在敏捷中应用测试驱动开发
    在敏捷中应用测试驱动开发
  • 原文地址:https://www.cnblogs.com/flyinggod/p/8598481.html
Copyright © 2011-2022 走看看