PCL主页:http://pointclouds.org/about/
首先,简单介绍下PCL是什么。
PCL是Point Cloud Library的简称,是一个大型的开源项目,用于2D/3D图像和点云的处理,其中包括了大量点云滤波、特征估计、表面重建、点云注册、模型匹配分割的算法。
下面具体介绍下PCL1.7.2版本在Windows平台下的编译,配置及使用。
- 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(可选)
- 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
- 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目录下。
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,最终生成工程。
- 生成bin/lib文件
打开*.\pcl\build\PCL.sln,编译Debug版本