关于PCL的那些事——环境搭配(PCL1.8 64bitWIN8.1 VS2013)

新项目是3D重建,最近都在查资料看论文,关于生成3D点云,特征检测,点云匹配,曲面重建等等。有篇知乎写得不错,讲了实现3D重建的相关体系和方法。不过我也是从那里面得到了启发,方法和里面也不太相同,因为里面主要是多幅2D图像三维重建和单目三维重建,他们都没有深度信息而是通过SFM等一些算法计算出景深。而我使用的是RGBD传感器如kinect,xtion。所以我关注与3D特征检测匹配等。大家可以看看微软的KinectFusion和PCL的kinfu以及MIT的Kintinuous。关于PCL,相信能看到这篇博客的童鞋们都是知道的:Point Cloud Library是处理三维点云的第三方库,非常的强大,地位相当于opencv。PCL集成了很多有名的处理3D点云的算法,学习使用PCL以及了解背后的算法非常重要。那么进入正题,今天我来给大家讲一下如何配置PCL(博主也是走了好多弯路啊..)。


首先我们知道网上大多数都是PCL1.72以前的配置,网上有个老外的教程关于PCL1.72在win8.1,vs2012/2013/2015的配置,其中我们看到1.72还不支持opennigrabber所以只能用他提供的kinectgrabber。但是我用的是xtion不是kinect,所以我必须使用opennigrabber,怎么办呢?opennigrabber支持openni1.x但是openni1.x只支持vs2010以前 openni2.x支持新的vs但是PCL1.72不支持openni2.x。所以使用xtion的孩子怎么半呢(使用kinect的孩子们不需要担心)?要么使用单独的openni2.x去获得3D点云然后用PCL做其他研究,要么,嗯,配置PCL1.8吧哈哈。福音来了,PCL1.8开始支持openni2.x了,所以我们开始在win8.1上配置PCL1.8,使用vs2013和cmake3.3。


下载PCL1.8之前,第一步是下载配置PCL所需的第三方库(全是最新版本官网下载链接,如果国内没法下载的话大家说一下,我会上传到CSDN并给出链接):

Boost 1.59.0

Eigen 3.2.7

FLANN 1.8.4

Qhull 2012.1

VTK 6.3.0

OpenNI 2.2.0.33 Beta


除了openni2.2之外都是源码,需要使用cmake编译出include和lib,dll(Boost不同)。openni2直接安装就好,注意即使我们是64位系统,但是我们要根据开发的应用来决定下载32位还是64位的三方库。如要开发win32就下载32位,要开发x64就下载64位。接下来介绍其他5个库的配置方法:


Boost 1.59.0

首先下载微软的mpi,然后在boost\tools\build\src\tools中找到mpi.jam,修改其中的这三行:

249 line            local cluster_pack_path_native = "C:\\Program Files\\Microsoft MPI" ; 

251 line            if [ GLOB $(cluster_pack_path_native)\\Inc : mpi.h ] 

260 line            options = <include>$(cluster_pack_path)/Inc

然后打开cmd,进入boost文件夹,运行: bootstrap.bat    运行结束后会生成project-config.jam,打开并在第四行加上:using mpi ; 

接下来还是用cmd进入boost文件夹,运行:b2.exe toolset=msvc-12.0 address-model=32 --build-dir=build\x86 install --prefix="X:\X\Boost" -j8

注意如果要开发x64的程序而不是64位系统,请运行:b2.exe toolset=msvc-12.0 address-model=64 --build-dir=build\x64 install --prefix="X:\X\Boost" -j8

(其中没事msvc-12.0代表vs2013,如果是11.0是vs2012,14.0是vs2015  后面的X:\X\Boost是boost的文件夹,b2.exe就在里面)

然后等着就好了,时间有点久,耐心等。完成后在环境变量中建立BOOST_ROOT变量,值为boost文件夹地址X:\X\Boost


Eigen 3.2.7

这个简单,使用cmake,sourse选eigen文件夹(如C:\eigen),build目录选eigen下的build(如C:\eigen\build)。点击Configure会提示新建build文件夹,选择vs12 2013编译器(编译x64版本的话选择vs12 2013 win64),然后注意找到CMAKE_INSTALL_PREFIX这个选项,很重要,默认为C:\Program Files (x86)\Eigen,请修改为你的eigen所在文件夹,如上面的C:\eigen,不然在之后的install会出错。修改完后再次点Configure,然后Generate。在eigen\build文件夹中打开eigen.sln工程文件,待加载完文件后,生成all_build,完成后生成install。完成后可以看到eigen文件夹中出现include。(PS:没有生成lib,所以debug或者release都无所谓,include都一样)最后在环境变量中建立EIGEN_ROOT变量,值为eigen文件夹地址。


FLANN 1.8.4

使用cmake,sourse选flann文件夹(如C:\flann),build目录选flann下的build(如C:\flann\build)。点击Configure会提示新建build文件夹,选择vs12 2013编译器(编译x64版本的话选择vs12 2013 win64),然后注意找到CMAKE_INSTALL_PREFIX这个选项,很重要,默认为C:\Program Files (x86)\flann,请修改为你的flann所在文件夹,如上面的C:\flann,不然在之后的install会出错。然后添加一个entry:

Name: CMAKE_DEBUG_POSTFIX

Type: STRING

Value: -gd

修改完后再次点Configure,然后Generate。在C:\flann\src\cpp\flann\util中找到serialization.h文件 在92行BASIC_TYPE_SERIALIZER(bool);之后加入以下代码:

#ifdef _MSC_VER

BASIC_TYPE_SERIALIZER( unsigned __int64 );

#endif

修改完后在flann\build文件夹中打开flann.sln工程文件,待加载完文件后,(debug和release)生成all_build,完成后生成install。完成后可以看到flann文件夹中出现include和lib文件夹。最后在环境变量中建立FLANN_ROOT变量,值为flann文件夹地址。


Qhull 2012.1

使用cmake,sourse选qhull文件夹(如C:\qhull),build目录选qhull下的build(如C:\qhull\build)。点击Configure(不会提示创建build文件夹因为build已经存在),选择vs12 2013编译器(编译x64版本的话选择vs12 2013 win64),然后注意找到CMAKE_INSTALL_PREFIX这个选项,很重要,默认为C:\Program Files (x86)\qhull,请修改为你的qhull所在文件夹,如上面的C:\qhull,不然在之后的install会出错。然后添加一个entry:

Name: CMAKE_DEBUG_POSTFIX

Type: STRING

Value: -d

修改完后再次点Configure,然后Generate。在qhull\build文件夹中打开qhull.sln工程文件,待加载完文件后,修改libqhull和user_eg2的项目属性,C/C++ -> 高级 -> 编译为 C++ 代码 (/TP),完成后生成all_build(debug和release)即可,然后生成install。完成后可以看到qhull文件夹中出现include和lib文件夹。最后在环境变量中建立QHULL_ROOT变量,值为qhull文件夹地址。


VTK 6.3.0

使用cmake,sourse选VTK文件夹(如C:\VTK),build目录选VTK下的build(如C:\VTK\build)。点击Configure会提示新建build文件夹,选择vs12 2013编译器(编译x64版本的话选择vs12 2013 win64),然后注意找到CMAKE_INSTALL_PREFIX这个选项,很重要,默认为C:\Program Files (x86)\VTK,请修改为你的VTK所在文件夹,如上面的C:\VTK,不然在之后的install会出错。然后添加一个entry:

Name: CMAKE_DEBUG_POSTFIX

Type: STRING

Value: -gd

修改完后再次点Configure,然后Generate。在VTK\build文件夹中打开VTK.sln工程文件,待加载完文件后,(debug和release)生成all_build(时间有点久,耐心等待),完成后生成install。完成后可以看到VTK文件夹中出现include和lib文件夹。最后在环境变量中建立VTK_ROOT变量,值为VTK文件夹地址。


第三方库都配置好后开始配置PCL1.8:

使用cmake:

Where is the source code: C:\PCL-master

Where is build the binaries: C:\PCL-master\build

点击Configure提示新建build文件夹,选择vs12 2013编译器(编译x64版本的话选择vs12 2013 win64),正常情况下不会出现什么问题,修改CMAKE_INSTALL_PREFIX为C:\PCL-master,再次点击Configure,然后generate生成PCL.sln。下图是显示在cmake中的结果:

image.png

(如果出现找不到eigen,vtk等等说明环境变量没搞好,修改并重启。建议上面配置好第三方库时重启电脑使环境变量生效)打开PCL.sln并生成all_build(时间很久,耐心等待),下图为all_build成功结果截图:

image.png

然后到build文件夹中找到cmake_install.cmake修改第46行:file(INSTALL DESTINATION "${CMAKE_INSTALL_PREFIX}/3rdParty/Boost" TYPE DIRECTORY FILES "X:/X/Boost/" REGEX "/[^/]*\\/uninstall\\.exe$" EXCLUDE)  其中X:/X/Boost/为boost所在文件夹。我电脑上只有boost这个出现了错误,大家可以检查一下上下文中其他第三方库的文件夹地址有没有正确,错误的可以改正。下图是我这里的cmake_install.cmake的这一部分:

3093.png

然后生成install即可(debug和release)。成功截图如下:

image.png


最后在环境变量中建立PCL_ROOT变量,值为PCL文件夹地址。在PATH中加入%PCL_ROOT%\bin;%PCL_ROOT%\3rdParty\FLANN\bin;%PCL_ROOT%\3rdParty\VTK\bin  

大家可以到C:\PCL-master\test中找到大量的xx.pcd点云文件,拷贝到bin中,然后使用cmd进入bin文件夹,运行 pcl_viewer_debug.exe xx.pcd或者pcl_viewer_release.exe xx.pcd来观察三维点云。我选了一个five_people.pcd,结果如下:

image.png

image.png

最后再给大家看一张我使用pclwrite类保存的pcd文件的view:

image.png

image.png


关于PCL1.8的配置就到这里为止,欢迎大家和我讨论PCL~!


======================================================================================


2016/03/11补充:


6个第三方库和PCL库我放在了百度网盘里。(链接: http://pan.baidu.com/s/1hrv9CGW 密码: gbr3)


======================================================================================


2016/08/12补充:


前段时间帮学弟配pcl,才发现网上已经有了1.8的all-in-one,真是方便多了,不再需要我们自己配置各种第三方库了。无论是win7,win8还是win10,只要你有vs2013或者vs2015,都能直接用。网址是 PCL 1.8.0  All-in-one Installer,里面有vs2013的32位和64位版本, vs2015的32位和64位版本,还提供了各自的PDB调试文件(解压后放入pcl安装目录的bin下),打开installer只需一直下一步就好了(注意更改openni的安装路径到PCL路径下的3rdParty文件夹下)。安装好后设置环境变量,PCL_ROOT里写pcl的安装路径,Path里加上;%PCL_ROOT%\bin;%OPENNI2_REDIST64% (安装的32位的话写%OPENNI2_REDIST%)。然后进入vs里创建项目后,记得添加include和lib就好了。


————————————————

版权声明:本文为CSDN博主「cc_sunny」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。

原文链接:https://blog.csdn.net/aptx704610875/article/details/49947049


本文出自勇哥的网站《少有人走的路》wwww.skcircle.com,转载请注明出处!讨论可扫码加群:

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

会员中心
搜索
«    2024年4月    »
1234567
891011121314
15161718192021
22232425262728
2930
网站分类
标签列表
最新留言
    热门文章 | 热评文章 | 随机文章
文章归档
友情链接
  • 订阅本站的 RSS 2.0 新闻聚合
  • 扫描加本站机器视觉QQ群,验证答案为:halcon勇哥的机器视觉
  • 点击查阅微信群二维码
  • 扫描加勇哥的非标自动化群,验证答案:C#/C++/VB勇哥的非标自动化群
  • 扫描加站长微信:站长微信:abc496103864
  • 扫描加站长QQ:
  • 扫描赞赏本站:
  • 留言板:

Powered By Z-BlogPHP 1.7.2

Copyright Your skcircle.com Rights Reserved.

鄂ICP备18008319号


站长QQ:496103864 微信:abc496103864