原创————Pcl开源库1.7.1版本的安装
最开始安装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
- 卸载PCL1.6.0版本
- 卸载、清除1.6.0版本的boost eigen flann vtk qhull所有记录和文件
- 重新安装压缩包内的boost eigen flann vtk qhull QT4.8.0,默认为C盘 QT路径为 C:\Qt\4.8.0
- 安装cmake 2.8以上版本
- 解压缩1.7.1原代码包
- 打开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
// “pcl::io::savePNGFile
// “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:
- 在我实验室的电脑上成功安装PCL后,新建使用PCL的MFC程序,编译无误但是最终会提示找不到链接库,无论vs的项目属性如何配置都解决不了,最终通过把1.7.1的工程需要dll全部放入工程的debug/文件夹下才得以解决;
- 在MFC中加入PCL的功能模块没有想象中的那么难,最开始参看PCL中国论坛上的田博士的移植方法,觉得步骤太多太过繁琐,没敢去尝试,后来自己摸索,其实在MFC中掺入PCL只需要在你编译好的PCL完整工程中找到所需要的PCL模块的属性配置,并把他们配置到你的MFC中,并加入头文件即可;
- 在MFC中如果使用ifstream string 等标示符需要前面加std;
在使用PCL重建模块中的MLS算法时,会出现vector越界的情况,更改方法如下:
Fix MovingLeastSquares mlsresults vector assert error- 另外一个bug记不清是怎么出现的了,修改方法:
Fix compiling error of deprecated template.