Point Cloud Library 1.7.2编译及使用详细教程

PCL主页:http://pointclouds.org/about/

首先,简单介绍下PCL是什么。

PCL是Point Cloud Library的简称,是一个大型的开源项目,用于2D/3D图像和点云的处理,其中包括了大量点云滤波、特征估计、表面重建、点云注册、模型匹配分割的算法。

下面具体介绍下PCL1.7.2版本在Windows平台下的编译,配置及使用。

  1. PCL下载资源简单介绍

这是PCL 预编译Windows版本的下载链接。

http://pointclouds.org/downloads/windows.html

预编译顾名思义就是预先编译好了,无需在自己电脑上进行编译。PCL官方提供了1.6.0版本的All-in-one installers安装包,其中包括PCL库本身和其所有的依赖库(除了QT)(All-in-one installers安装包有MSVC2008&2010,32&62bit共4种组合,可根据自己的需要自行下载。注:这里的32或64bit是指32位库文件和64位库文件(只和编译器有关),并非指Windows系统是32位系统或64位系统。64位操作系统同样可选择使用32位库文件,并不冲突)。

同时也提供了各依赖库单独的预编译安装包,同样也有四种版本。

PCL官方文档中关于Windows下由源代码编译PCL依赖库的链接如下:http://pointclouds.org/documentation/tutorials/compiling_pcl_dependencies_windows.php#compiling-pcl-dependencies-windows

其中注明:各依赖库必须使用相同的编译选项,禁止32位库与64位库混合。

  • Boost:用于共享指针和多线程(必须)
  • Eigen:用于矩阵计算(必须)
  • Flann:用于最近临搜索(必须)
  • VTK:用于3D点云的渲染和可视化(必须)
  • Qt:用于开发图形化界面(可选)
  • QHull:用于表面的凸/凹包分解(可选)
  • OpenNI:用于从基于OpenNI的设备中获取点云数据,如kinect(可选)

  1. PCL编译准备工作
如果不需要用到最新的功能、特性,可以直接安装PCL 1.6.0  All-in-one installers。
如果需要使用新功能则需要自行编译PCL新版本的源码了。
PCL当前Github上https://github.com/PointCloudLibrary/pcl最新版本为1.8.0。较之更早的Release版本为1.7.2,同时提供下载链接https://github.com/PointCloudLibrary/pcl/releases。
对于第三方库是否也需要自行编译,PCL官方文档也给出了说明:

因此,本教程将直接使用http://pointclouds.org/downloads/windows.html提供的依赖库预编译单独安装包,避免一些不必要的问题。
使用的资源及工具列表一览:
  • 操作系统:Win10专业版 64bit
  • 编译器:MSVC 2010 
  • 编译工具:CMake 3.3.0(可自行到CMake官网下载安装最新稳定版)
  • PCL Source Code Edition:1.7.2
  • Boost:1.50.0 MSVC2010 32bit Stand alone installers
  • Eigen:3.0.5 Stand alone installers
  • Flann:1.7.1 MSVC2010 32bit Stand alone installers
  • VTK:5.8.0 without Qt support MSVC2010 32bit Stand alone installers
  1. PCL编译流程
  • Boost,Eigen,Flann,VTK安装包安装至默认路径;
  • 建立pcl文件夹,在子目录创建source,build文件夹;
  • 将pcl1.7.2源码拷贝至.\pcl\source\文件夹;
  • 打开CMake软件,设置Source code路径:.*/pcl/source,Build binaries路径:.*/pcl/build;
  • 点击Config,选择编译器,点击Finish

以下为输出信息

可以看到,在编译过程中出现“ Unable to find the requested Boost libraries.Unable to find the Boost header files. Please set BOOST_ROOT to the root
directory containing Boost or BOOST_INCLUDEDIR to the directory containing Boost's headers.
”,即编译器未找到Boost库所在位置,需要手动定位到我们安装的Boost目录下。
将CMake中的Grouped和Advanced选项勾选,便于我们定位错误所在。

手动选择Boost目录下include文件夹

再次Configure。 详细分析下最终的输出信息。

PkgConfig未定位到,OpenMP,Boost,Eigen,FLANN找到。

OpenNI等库未找到,因为我们并未安装这些可选依赖库。

由于我们选择的是没有Qt支持的VTK库,因此提升QVTK未找到,而VTK找到。至此,PCL所需的4个依赖库均已被CMake发现。

PCL中的子模块common...tools将会被编译。如取消勾选Grouped,则可自己选择是否编译某个模块。本教程中我们选择全部编译。

另外,apps将不会被编译,原因是某些apps中所需的OpenNI未被发现,我们可以选择手动勾选。
examples也默认不会被勾选,也可以选择手动勾选。
global_tests不会被构建,因为我们并未安装gtest,可以忽略。
点击Generate,最终生成工程。
  1. 生成bin/lib文件
打开*.\pcl\build\PCL.sln,编译Debug版本


猜你喜欢

转载自blog.csdn.net/sdochengxu1993/article/details/48174015