2014年6月8日星期日

Installation of Point Cloud Library (PCL) and integration with Visual studio 2010 project

    自从知道 Point Cloud Library (PCL) 之后就一直想用上它,尤其是其中的 point cloud visualization 模块以及 surface reconstruction 模块,可以更直观的呈现算法的结果。
    首先到 http://pointclouds.org/downloads/windows.html 上面下载 PCL 1.6.0 All-In-One Installer,里面包含了 PCL 以及所有第三方库的头文件以及库文件等,下下来之后点击安装,在安装完成后选择为所有用户添加 PCL 路径。
    完成安装后会发现此时系统已经自动将 PCL 的安装根目录 C:\Program Files\PCL 1.6.0 设为系统环境变量 PCL_ROOT,另外在默认索引 .dll 文件的 Path 系统变量中也已经添加了 C:\Program Files\PCL 1.6.0\bin 路径,避免了手动拷贝 .dll 到工程目录的必要。
    接着在 VS2010 中新建了一个 win32 console 工程专门用来测试 PCL tutorials,并添加如下路径:

于 Project->Properties->Configuration Properties->C/C++->General->Additional Include Directories 中添加
$(PCL_ROOT)\include\pcl-1.6
$(PCL_ROOT)\3rdParty\Boost\include
$(PCL_ROOT)\3rdParty\Eigen\include
$(PCL_ROOT)\3rdParty\FLANN\include
$(PCL_ROOT)\3rdParty\Qhull\include
$(PCL_ROOT)\3rdParty\VTK\include\vtk-5.8

于 Project->Properties->Configuration Properties->Linker->General->Additional Library Directories 中添加
$(PCL_ROOT)\lib
$(PCL_ROOT)\3rdParty\Boost\lib
$(PCL_ROOT)\3rdParty\FLANN\lib
$(PCL_ROOT)\3rdParty\Qhull\lib
$(PCL_ROOT)\3rdParty\VTK\lib\vtk-5.8

最后要做的是把需要的 .lib 文件添加到

Project->Properties->Configuration Properties->Linker->Input->Additional Dependencies 中。

    这里我没管哪些函数具体是包含在哪个 .lib 文件中,而是一股脑的把所有 debug 的 .lib 全部添加到了里面,省事,另外要强调的是 PCL 中所有可视函数不管是简单的 pcl::visualization::CloudViewer 还是功能强大的 pcl::visualization::PCLVisualizer 都是基于 VTK 显示库,所以要使用显示模块,VTK 的所有相关的 .lib 文件都得添加进来,最最需要注意的是 VTK 库函数中有很多是封装了 OpenGL 的基本函数,因此还得将 opengl32.lib 给添加进来,否则很多 VTK 函数会出现链接错误。

    接着就准备开始测试,本来 PCL 安装好之后在其安装目录 $(PCL_ROOT)\share\doc\pcl-1.6\tutorials\sources 中有一个总的 CMakeLists 可以通过 CMake 2.8 make 出一个总的 PCLTutorial 工程来,其中包含了所有的 tutorials 工程,这里要注意的是,makefile 的时候输出路径尽量别选在 C:\ 中有权限限制的区域,可能无法  makefile,我最终是选择的输出在桌面。如此生成的工程虽然包含了所有的 tutorials 但是编译不能成功,提示需要 Qt 相关的 .lib 文件,即使单独运行某一个 tutorial 也不行,所以最终我还是选择了将单个感兴趣的 tutorial 代码粘贴到上面自己新建的 win32 console 工程来进行测试的方式。

    其中 pcl_visualizer tutorial 运行的效果如下所示:



    cloud_viewer tutorial 运行的效果如下所示:


    总共有 46 万个点,在 debug 模式下显示的还是挺流畅的,感觉很不错,唯一不足的是响应鼠标拖动旋转的方式还是没有 CloudCompare 用着舒服。
    最后要注意的是 pcl_visualizer tutorial 中的 int main(int argc, char ** argv) 函数需要根据用户输入的 argv 参数中的内容来进行不同模式的显示,这个参数是在调用 main 函数时输入的,做法就是通过命令提示符进入到 .exe 所在目录,然后通过如下格式输入不同参数来调用 main 函数:


没有评论:

发表评论