文章目录
  1. 1. 原创博文
  2. 2. 转载请注明出处

最开始安装PCL,是直接利用all-in-one安装的1.6.0版本,但是PCL中有许多区域分割的新功能以及配准方面新出的NDT算法只有1.7以上的版本才能实现,所以从源码编译安装了当时的PCL的最高release版本1.7.1版本,目前PCL已经公开了1.7.2版本和一个测试的master版本。关于PCL公开的源码可以从PCL的github主页上下载。

https://github.com/PointCloudLibrary/pcl

1.7.1版本的具体安装步骤如下:

  1. 卸载PCL1.6.0版本
  2. 卸载、清除1.6.0版本的boost eigen flann vtk qhull所有记录和文件
  3. 重新安装压缩包内的boost eigen flann vtk qhull QT4.8.0,默认为C盘 QT路径为 C:\Qt\4.8.0
  4. 安装cmake 2.8以上版本
  5. 解压缩1.7.1原代码包
  6. 打开cmake 编译1.7.1源代码

一开始到这,通过cmake编译出PCL的vs2010的工程后,以为直接在VS2010中编译工程后就会成功安装,但是实际上1.7.1版本的源码在png_io.h文件内是有存在bug的地方的,这个问题困扰了很久,不过最终在PCL的官方论坛上找到了解答。按照如下修改png_io.h文件:

把io\include\pcl\io\png_io.h文件报错地方”template <“的前四行注释掉,重新编译io模块,修改后的内容如下:
// PCL_DEPRECATED (template void savePNGFile (const std::string& file_name, const pcl::PointCloud& cloud),
// “pcl::io::savePNGFile (file_name, cloud) is deprecated, please use a new generic “
// “function pcl::io::savePNGFile (file_name, cloud, field_name) with \”rgb\” as the field name.”
// );

重新编译整个PCL工程,这次就可以完全正确,并最终右键install,点击编译完成PCL1.7.1的安装。

整个过程中,右键all-build,进行编译,时间较长,大约1小时,通过后右键install进行编译
完成后查看C盘内C:\Program Files\PCL是否有PCL,有的话那么恭喜你,PCL成功安装了。

Tips and bugs:

  1. 在我实验室的电脑上成功安装PCL后,新建使用PCL的MFC程序,编译无误但是最终会提示找不到链接库,无论vs的项目属性如何配置都解决不了,最终通过把1.7.1的工程需要dll全部放入工程的debug/文件夹下才得以解决;
  2. 在MFC中加入PCL的功能模块没有想象中的那么难,最开始参看PCL中国论坛上的田博士的移植方法,觉得步骤太多太过繁琐,没敢去尝试,后来自己摸索,其实在MFC中掺入PCL只需要在你编译好的PCL完整工程中找到所需要的PCL模块的属性配置,并把他们配置到你的MFC中,并加入头文件即可;
  3. 在MFC中如果使用ifstream string 等标示符需要前面加std;
  4. 在使用PCL重建模块中的MLS算法时,会出现vector越界的情况,更改方法如下:
    Fix MovingLeastSquares mlsresults vector assert error

  5. 另外一个bug记不清是怎么出现的了,修改方法:
    Fix compiling error of deprecated template.

原创博文

转载请注明出处

文章目录
  1. 1. 原创博文
  2. 2. 转载请注明出处