资讯专栏INFORMATION COLUMN

Linux下 PCL源码安装

iamyoung001 / 1741人阅读

摘要:既然选择了,那末接下来便是理所当然的事情获取源码包。建议此源码安装不针对任何系统,,等都适用。若打算源码安装,在安装之前最好先更新一下系统,这样基本能保证所安装的包为最新包。

不得不知的PCL

所谓PCL(Point Cloud Library)其实就是一个开源的c++代码库,它实现了大量点云相关的通用算法和高效的数据管理结构,不仅涉及逆向工程领域,其还在模式识别,机器人视觉,计算机图形学,虚拟现实等众多领域大显神威。

基于以下第三方库:Boost,Eigen,FlANN,VTK,OpenNI,QHull,实现了点云获取,滤波,分割,精简,配准,特征提取,追踪,曲面重建和可视化等功能。

迈开“艰难”的第一步

所谓“艰难”的第一步,其实说白了就是IDE的选择问题,只是因为自己对Linux和window都是略知一二。在选择Linux或win搭建开发平台时犯了所谓的“选择恐惧症”的问题。先说window,因为自己以前曾在window+vs2010下配置opengl开发环境,在配置opengl时,各种依赖各种手动链接然后各种错误,不胜其烦,也因为在win下各种编程的不适,让我果断选择了在linux下搭建开发平台。

既然选择了linux,那末接下来便是理所当然的事情--获取PCL源码包。PCL源码包可以在其官方网站获取,当获取源码包之后,顺理成章的便是将其解压并在解压出的文件新建一个空工程文档(我的习惯是mkdir build && cd build,以下便用build代表自己所建的工程文档吧),进入build之后,便可执行 cmake..,利用cmake编译源码包,用以生成和自己电脑环境相匹配的开发环境。当然,如果你只想用PCL的某个单一的功能,可在build文件中执行ccmake..,这时候,便会出现一个选择窗口,只对你想安装的函数选择编译即可。

cmake阶段,cmake会根据CmakeLists.txt 文件生列出所需要安装的依赖库(boost,qhull,eigen等),查看cmake的输出,按提示安装所缺少的库即可,最终生成所需要的MakeFile文件。
既然现在已经生成了和自己电脑环境匹配的PCL环境,下一步自然是是依据你cmake生成的编译环境,建立PCL的链接库,这样必须用make,即 make (耗时较长)。

环境配置好了,PCL的链接库也已经生成,最后一步就是将我们生成的各种库文件安装在我们电脑中,sudo make install 可帮你完成你的意愿。

建议:

此源码安装不针对任何Linux系统,gentoo,ubantu等都适用。

若打算源码安装,在安装之前最好先更新一下系统,这样基本能保证所安装的包为最新包。

其实罗嗦了这麽一大堆,归结起来就以下步骤句话:

下载获取PCL源文件解压,并 cd pcl

mkdir build && cd build

cmake .. ,按照提示安装所需依赖包

make

sudo make install

把“浮云”抛到身后

暂时先把PCL的命名规范,目录命名,结构体,类,变量名等等以后必不可少,但现在还用不到的东西统统称为“浮云”,既然归于浮云,那就先让它随风而逝吧。

相信必定有或多或少的“同志”和我一样,在完美构建完PCL开发平台之后,第一件事并不是拿着《PCL点云学习教程》或是在PCL官方网站上开始从头学习,而是先找个官网实例练验证一下再说。好吧,我们就是最简单的输入输出来说。
首先,必须有供输入的文件,PCL建议的文件格式为".pcd",可从官网上下载任意“.pcd”文件即可。

既然想体验PCL,好吧,直接把输入输出代码copy过来把:

 #include 
 #include 
 #include 
 #include
 int
 main (int argc, char** argv)   
 {
      pcl::PointCloud::Ptr cloud (new pcl::PointCloud);
      if (pcl::io::loadPCDFile (argv[1], *cloud) == -1) 
      {
        PCL_ERROR ("Couldn"t read file test_pcd.pcd 
");
        return (-1);
      }
      std::cout << "Loaded "
                << cloud->width * cloud->height
                << " data points from test_pcd.pcd with the following fields: "
                << std::endl;
      #if 0
      for (size_t i = 0; i < cloud->points.size (); ++i)
        std::cout << "    " << cloud->points[i].x
                  << " "    << cloud->points[i].y
                  << " "    << cloud->points[i].z << std::endl; 
      #endif 
      
      pcl::visualization::CloudViewer viewer("test");
      viewer.showCloud(cloud);
      while (!viewer.wasStopped()){ }
      return (0);
 }

当上面这段小程序运行后,如果能够可视化出你的.pcd文件,可以断定你的PCL开发平台已经搭建成功。

如果是用cmake构建项目文件的话,添加 CMakeLists.txt 文件,内容如下:

cmake_minimum_required(VERSION 2.8 FATAL_ERROR)

project(proj)

find_package(PCL 1.2 REQUIRED)

include_directories(${PCL_INCLUDE_DIRS})
link_directories(${PCL_LIBRARY_DIRS})
add_definitions(${PCL_DEFINITIONS})

add_executable (test test.cpp)
target_link_libraries (test ${PCL_LIBRARIES})

上述文件是说:cmake最低版本为2.8, 我的工程名字叫做 proj,pcl最低版本要求为1.2,然后链接进所有pcl的文件目录和库文件,生成的可执行文件名字叫做 test,我的主程序文件叫做 test.cpp。

按自己的习惯,可将上述cmake文件和test.cpp文件放在同一目录之下(或不同目录,即源码与中间文件分离的原则),执行cmake,如果没有什么错误,再执行make,则会在源文件目录之下生成test可执行文件。

我想稍有一点编程经验的,应该都可以看懂。从上边代码中,是否可以发现一些PCL的特色呢?

下面贴出我的几个练习实例。

1)体素网格精简

2)法向量可视化

3)曲面重建

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/9388.html

相关文章

  • 笔记一:点云环境搭建及法向量获取

    摘要:点云的概念点云是在同一空间参考系下表达目标空间分布和目标表面特性的海量点集合,在获取物体表面每个采样点的空间坐标后,得到的是点的集合,称之为点云。     1. 点云环境 1.1点云 点云与三维图像的关系:三维图像是一种特殊的信息表达形式,其特征是表达的空间中三个维度的数据,表现形式包括:...

    superPershing 评论0 收藏0
  • pcl可视化的那些事

    摘要:在点云数据预处理中,要想知道点云的形状需要可视化要想了解精简去噪简化压缩的结果需要可视化配准中,对应点对的显示对应点对的去除结果配准变化的过程需要可视化下可直接在命令行输入或可直接显示中的点云文件。 可视化:一目了然 如题所示,可视化的重要性不必多说。在点云数据预处理中,要想知道点云的形状需要可视化; 要想了解精简/去噪/简化/压缩 的结果需要可视化; 配准中,对应点对的显示/对应点对...

    Rocture 评论0 收藏0
  • 双目三维重建系统(双目标定+立体校正+双目测距+点云显示)Python

    摘要:双目三维重建系统双目标定立体校正双目测距点云显示目录双目三维重建系统双目标定立体校正双目测距点云显示双目三维重建系统双目标定立体校正双目测距点云显示项目结构项目结构双目相机标定和校准双目相机标定和校准双目摄像头双目摄 双目三维重建系统(双目标定+立体校正+双目测距+点云显示)Python 目...

    jsdt 评论0 收藏0
  • PCL中采样一致性算法

    摘要:随机采样一致性估计的另一应用就是点云的配准。随机采样一致性相关概念及算法随机采样一致性算法是一种随机参数估计算法。 PCL中采样一致性算法 1 随机采样一致性相关...

    Ocean 评论0 收藏0
  • PCL 之 ICP 算法实现

    摘要:是什么,即最近点迭代算法,是最为经典的数据配准算法。实例展示之变种有很多变种,有的,也有的,一般后者的计算速度快一些,是基于法向量的,需要输入数据有较好的法向量,具体使用时建议根据自己的需要及可用的输入数据选择具体方法。 ICP是什么? ICP(Iterative Closest Point),即最近点迭代算法,是最为经典的数据配准算法。其特征在于,通过求取源点云和目标点云之间的对应点...

    ShowerSun 评论0 收藏0

发表评论

0条评论

iamyoung001

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<