Windows下PCL及其第三方库的安装编译过程

Windows下PCL及其第三方库的安装编译过程

 

PCL库介绍:

Point Cloud Library (PCL)  是一个进行2D/3D图像处理和点云处理工程库。

 

PCL可以实现的功能:http://www.pointclouds.org/documentation/

 

PCL及其第三方库的安装、编译

 

PCL及其第三方库的安装、编译有两种方法:1、下载预编译版本。2、从源码进行编译安装。

  1. 预编译版本的下载安装:
    1. 在windows上使用All-in-one installers,必须首先安装Microsoft Visual Studio 2010 或者 Visual Studio 2008。
    2. 从PCL官网(http://www.pointclouds.org/downloads/windows.html)下载与Microsoft Visual Studio版本一致的All-in-one installers。
    3. 从官网下载的All-in-one installers中已经包含了相应的第三方库。
    4. 与安装其他软件类似,直接双击安装即可。
    5. 由于All-in-one installers提供的PCL库的版本较低,因此很多新添加的功能无法使用。
  2. 从源码进行安装、编译:

    2.1 如果只是想使用最新版本的PCL库,仍然使用Microsoft Visual Studio作为编译工具,那么第三方库可以不从源码进行编译安装,而使用PCL官网提供的安装版本进行安装,PCL库则需要从源码开始进行编译、安装(http://pointclouds.org/documentation/tutorials/compiling_pcl_windows.php#compiling-pcl-windows)。

    2.2 如果不想使用Microsoft Visual Studio作为编译工具 (比如想使用codeblocks的MinGW),则第三方库和PCL库都需要从源码进行安装编译(http://pointclouds.org/documentation/tutorials/compiling_pcl_dependencies_windows.php#compiling-pcl-dependencies-windows)。

    2.3 本文主要讲解2.1的安装过程。

     

在Windows上,使用Microsoft Visual Studio作为编译工具,对PCL及其第三方库进行安装、编译过程:

  1. 在PCL官网(http://www.pointclouds.org/downloads/windows.html)下载与Microsoft Visual Studio版本一致的第三方库的安装文件。
  2. 因为安装PCL库只有Boost、Eigen、Flann、VTK这四个库是必须的,所以可以只下载安装这四个库。按照正常安装软件的步骤分别安装这些库,安装目录可以不是默认目录(如:"C:\\Program Files\\PCL\\Boost","C:\\Program Files\\PCL\\VTK 5.8.0";"C:\\Program Files\\PCL\\flann";"C:\\Program Files\\PCL\\Eigen")。
  3. 下载安装cmake(http://www.cmake.org/cmake/resources/software.html),请从Binary Distribution下的Windows (Win32 Installer)处下载。
  4. 下载PCL源码库(https://github.com/PointCloudLibrary/pcl/releases)。我下载的是PCL 1.7.1版,存放在"C:\\Program Files\\PCL\\trunk\\ "下。
  5. 修改"C:\\Program Files\\PCL\\trunk\\pcl-pcl-1.7.1\\io\\include\\pcl\\io\\png_io.h"文件中的

     

    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."

    );"

     

     

    "template PCL_DEPRECATED (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."

    );"。参考资料:http://blog.csdn.net/wishchin/article/details/14420037

  6. 运行cmake,将"C:\\Program Files\\PCL\\trunk\\pcl-pcl-1.7.1\\CMakeLists.txt"文件拖入cmake窗口,选择相应的路径及与Microsoft Visual Studio版本一致的编译工具。
  7. 勾选"Grouped"和"Advanced"复选框对变量进行分类,单击camke中的"configure"按钮进行配置。
  8. 在"Search"框中输入"boost"。一般情况下,cmake都会找到相应第三方库的路径,如果cmake没有找到,可以在相应的变量中自己设置,帮助cmake找到相应的路径。
  9. 依次检查Flann及Ungrouped Entries下的EIGEN_INCLUDE_DIR及VTK_DIR是否已经找到了相应的路径。如果没有找到,则修改其value值为相应的安装路径,帮助cmake找到路径。
  10. 这4个库都找到了相应的路径之后,再次点击configure。正常情况下,下面的结果窗口不会有error出现了。当然会有红色的字体出现,但是只要不是error都没有问题(一般情况下出现红色字体是因为没有安装相应的库,比如Intel的SDK库,这时Ungrouped Entries下的PXCAPI_DIR的相应结果会出现红色字体,如果你不用这个库,那么就不用管这些红色字体,如果你需要,可以下载安装相应版本的Intel的库后对cmake进行设置。如果有些强迫症患者实在不希望看到红字,可以直接将该选项的Value值设置为空)。
  11. 点击Generate,生成相应的文件。
  12. 在camke的目标路径下找到文件"C:\\Program Files\\PCL\\PCL\\PCL.sln",打开后。首先选择Debug版本,All-BUILDà右击àBuild。编译通过后选择Release版本,再次Build。注意debug和realse版本都要编译一遍,而且要全部编译通过(http://blog.csdn.net/silangquan/article/details/9533081)。

  13. 然后再把INSALL编译一下,debug和realse版本都要编译一遍。
  14. 到这里,PCL库就编译好了。

PCL库在vs2010中的配置过程

  1. 打开VS2010 ,创建一个新的工程,点击左侧窗口下方的属性管理器,双击Microsoft.Cpp.win32.user,弹出属性页。
  2. 点击VC++目录(VC++ Directories),
    1. 在包含目录(Include Directories)里添加:

C:\Program Files\PCL\Eigen\include

C:\Program Files\PCL\flann\include

C:\Program Files\PCL\VTK 5.8.0\include\vtk-5.8

C:\Program Files\PCL\Boost\include

C:\Program Files\PCL\include\pcl-1.7

b)    在库目录里(Library Directories)添加:

C:\Program Files\PCL\flann\lib

C:\Program Files\PCL\VTK 5.8.0\lib\vtk-5.8

C:\Program Files\PCL\Boost\lib

C:\Program Files\PCL\lib

  1. 点击C/C++——>常规(General),点开附加包含目录(Additional Include Directories),添加

C:\Program Files\PCL\Eigen\include

C:\Program Files\PCL\flann\include

C:\Program Files\PCL\VTK 5.8.0\include\vtk-5.8

C:\Program Files\PCL\Boost\include

C:\Program Files\PCL\include\pcl-1.7

  1. 点开链接器->常规,在附加库目录中添加

C:\Program Files\PCL\flann\lib

C:\Program Files\PCL\VTK 5.8.0\lib\vtk-5.8

C:\Program Files\PCL\Boost\lib

C:\Program Files\PCL\lib

  1. 确定后,关闭上述窗口。
  2. 双击Debug|win32,链接器->输入->附加依赖项里边添加:

opengl32.lib

pcl_common_debug.lib

pcl_features_debug.lib

pcl_filters_debug.lib

pcl_io_debug.lib

pcl_io_ply_debug.lib

pcl_kdtree_debug.lib

pcl_keypoints_debug.lib

pcl_octree_debug.lib

pcl_outofcore_debug.lib

pcl_people_debug.lib

pcl_recognition_debug.lib

pcl_registration_debug.lib

pcl_sample_consensus_debug.lib

pcl_search_debug.lib

pcl_segmentation_debug.lib

pcl_surface_debug.lib

pcl_tracking_debug.lib

pcl_visualization_debug.lib

boost_chrono-vc100-mt-gd-1_49.lib

boost_date_time-vc100-mt-gd-1_49.lib

boost_filesystem-vc100-mt-gd-1_49.lib

boost_graph-vc100-mt-gd-1_49.lib

boost_graph_parallel-vc100-mt-gd-1_49.lib

boost_iostreams-vc100-mt-gd-1_49.lib

boost_locale-vc100-mt-gd-1_49.lib

boost_math_c99-vc100-mt-gd-1_49.lib

boost_math_c99f-vc100-mt-gd-1_49.lib

boost_math_tr1-vc100-mt-gd-1_49.lib

boost_math_tr1f-vc100-mt-gd-1_49.lib

boost_mpi-vc100-mt-gd-1_49.lib

boost_prg_exec_monitor-vc100-mt-gd-1_49.lib

boost_program_options-vc100-mt-gd-1_49.lib

boost_random-vc100-mt-gd-1_49.lib

boost_regex-vc100-mt-gd-1_49.lib

boost_serialization-vc100-mt-gd-1_49.lib

boost_signals-vc100-mt-gd-1_49.lib

boost_system-vc100-mt-gd-1_49.lib

boost_thread-vc100-mt-gd-1_49.lib

boost_timer-vc100-mt-gd-1_49.lib

boost_unit_test_framework-vc100-mt-gd-1_49.lib

boost_wave-vc100-mt-gd-1_49.lib

boost_wserialization-vc100-mt-gd-1_49.lib

libboost_chrono-vc100-mt-gd-1_49.lib

libboost_date_time-vc100-mt-gd-1_49.lib

libboost_filesystem-vc100-mt-gd-1_49.lib

libboost_graph_parallel-vc100-mt-gd-1_49.lib

libboost_iostreams-vc100-mt-gd-1_49.lib

libboost_locale-vc100-mt-gd-1_49.lib

libboost_math_c99-vc100-mt-gd-1_49.lib

libboost_math_c99f-vc100-mt-gd-1_49.lib

libboost_math_tr1-vc100-mt-gd-1_49.lib

libboost_math_tr1f-vc100-mt-gd-1_49.lib

libboost_mpi-vc100-mt-gd-1_49.lib

libboost_prg_exec_monitor-vc100-mt-gd-1_49.lib

libboost_program_options-vc100-mt-gd-1_49.lib

libboost_random-vc100-mt-gd-1_49.lib

libboost_regex-vc100-mt-gd-1_49.lib

libboost_serialization-vc100-mt-gd-1_49.lib

libboost_signals-vc100-mt-gd-1_49.lib

libboost_system-vc100-mt-gd-1_49.lib

libboost_test_exec_monitor-vc100-mt-gd-1_49.lib

libboost_thread-vc100-mt-gd-1_49.lib

libboost_timer-vc100-mt-gd-1_49.lib

libboost_unit_test_framework-vc100-mt-gd-1_49.lib

libboost_wave-vc100-mt-gd-1_49.lib

libboost_wserialization-vc100-mt-gd-1_49.lib

MapReduceMPI-gd.lib

mpistubs-gd.lib

vtkalglib-gd.lib

vtkCharts-gd.lib

vtkCommon-gd.lib

vtkDICOMParser-gd.lib

vtkexoIIc-gd.lib

vtkexpat-gd.lib

vtkFiltering-gd.lib

vtkfreetype-gd.lib

vtkftgl-gd.lib

vtkGenericFiltering-gd.lib

vtkGeovis-gd.lib

vtkGraphics-gd.lib

vtkhdf5-gd.lib

vtkHybrid-gd.lib

vtkImaging-gd.lib

vtkInfovis-gd.lib

vtkIO-gd.lib

vtkjpeg-gd.lib

vtklibxml2-gd.lib

vtkmetaio-gd.lib

vtkNetCDF-gd.lib

vtkNetCDF_cxx-gd.lib

vtkpng-gd.lib

vtkproj4-gd.lib

vtkRendering-gd.lib

vtksqlite-gd.lib

vtksys-gd.lib

vtktiff-gd.lib

vtkverdict-gd.lib

vtkViews-gd.lib

vtkVolumeRendering-gd.lib

vtkWidgets-gd.lib

vtkzlib-gd.lib

flann-gd.lib

flann_cpp_s-gd.lib

flann_cuda_s-gd.lib

flann_s-gd.lib

 

注:

  1. 这些库是在编译Debug版本时得到的链接库,每个链接库的名称中都带有_debug或者-gd等信息,非常容易识别。这些内容存储在相应库的lib文件夹下,如"C:\\Program Files\\PCL\\lib\\pcl_common_debug.lib",可以通过编程序获取文件名,然后将文件名写入txt文件,之后将txt的内容复制到这里。

     

    附一段Python的程序,供参考:

import sys

RootDir="C:\\Program Files\\PCL\\VTK 5.8.0\\lib\\vtk-5.8\\"

a=os.listdir(RootDir)

out=open("C:\\Users\\Administrator\\Desktop\\test.txt",'w')

 

final=[]

for s in a:

print RootDir+s

if os.path.isfile(RootDir+s):

if os.path.splitext(s)[1]==".lib":

final.append(s)

#在这里修改i从0开始或从1开始,以区分debug和release版本的不同

for i in range(1,len(final),2):

out.write(final[i]+'\n')

 

out.close()

  1. 这里一定要注意,是双击Debug|Win32来打开相应的属性窗口,跟上面提到的打开属性窗口的方式不一样。
  2. 我用的boost是1.49版本,所以boost后面都是_49结尾,这里不是拷贝过去就可以用的,也许你用的是1.50版本。
  1. 双击Release|win32,链接器->输入->附加依赖项里边添加:

pcl_common_release.lib

pcl_features_release.lib

pcl_filters_release.lib

pcl_io_ply_release.lib

pcl_io_release.lib

pcl_kdtree_release.lib

pcl_keypoints_release.lib

pcl_octree_release.lib

pcl_outofcore_release.lib

pcl_people_release.lib

pcl_recognition_release.lib

pcl_registration_release.lib

pcl_sample_consensus_release.lib

pcl_search_release.lib

pcl_segmentation_release.lib

pcl_surface_release.lib

pcl_tracking_release.lib

pcl_visualization_release.lib

boost_chrono-vc100-mt-1_49.lib

boost_date_time-vc100-mt-1_49.lib

boost_filesystem-vc100-mt-1_49.lib

boost_graph-vc100-mt-1_49.lib

boost_graph_parallel-vc100-mt-1_49.lib

boost_iostreams-vc100-mt-1_49.lib

boost_locale-vc100-mt-1_49.lib

boost_math_c99-vc100-mt-1_49.lib

boost_math_c99f-vc100-mt-1_49.lib

boost_math_tr1-vc100-mt-1_49.lib

boost_math_tr1f-vc100-mt-1_49.lib

boost_mpi-vc100-mt-1_49.lib

boost_prg_exec_monitor-vc100-mt-1_49.lib

boost_program_options-vc100-mt-1_49.lib

boost_random-vc100-mt-1_49.lib

boost_regex-vc100-mt-1_49.lib

boost_serialization-vc100-mt-1_49.lib

boost_signals-vc100-mt-1_49.lib

boost_system-vc100-mt-1_49.lib

boost_thread-vc100-mt-1_49.lib

boost_timer-vc100-mt-1_49.lib

boost_unit_test_framework-vc100-mt-1_49.lib

boost_wave-vc100-mt-1_49.lib

boost_wserialization-vc100-mt-1_49.lib

libboost_chrono-vc100-mt-1_49.lib

libboost_date_time-vc100-mt-1_49.lib

libboost_filesystem-vc100-mt-1_49.lib

libboost_graph_parallel-vc100-mt-1_49.lib

libboost_iostreams-vc100-mt-1_49.lib

libboost_locale-vc100-mt-1_49.lib

libboost_math_c99-vc100-mt-1_49.lib

libboost_math_c99f-vc100-mt-1_49.lib

libboost_math_tr1-vc100-mt-1_49.lib

libboost_math_tr1f-vc100-mt-1_49.lib

libboost_mpi-vc100-mt-1_49.lib

libboost_prg_exec_monitor-vc100-mt-1_49.lib

libboost_program_options-vc100-mt-1_49.lib

libboost_random-vc100-mt-1_49.lib

libboost_regex-vc100-mt-1_49.lib

libboost_serialization-vc100-mt-1_49.lib

libboost_signals-vc100-mt-1_49.lib

libboost_system-vc100-mt-1_49.lib

libboost_test_exec_monitor-vc100-mt-1_49.lib

libboost_thread-vc100-mt-1_49.lib

libboost_timer-vc100-mt-1_49.lib

libboost_unit_test_framework-vc100-mt-1_49.lib

libboost_wave-vc100-mt-1_49.lib

libboost_wserialization-vc100-mt-1_49.lib

MapReduceMPI.lib

mpistubs.lib

vtkalglib.lib

vtkCharts.lib

vtkCommon.lib

vtkDICOMParser.lib

vtkexoIIc.lib

vtkexpat.lib

vtkFiltering.lib

vtkfreetype.lib

vtkftgl.lib

vtkGenericFiltering.lib

vtkGeovis.lib

vtkGraphics.lib

vtkhdf5.lib

vtkHybrid.lib

vtkImaging.lib

vtkInfovis.lib

vtkIO.lib

vtkjpeg.lib

vtklibxml2.lib

vtkmetaio.lib

vtkNetCDF.lib

vtkNetCDF_cxx.lib

vtkpng.lib

vtkproj4.lib

vtkRendering.lib

vtksqlite.lib

vtksys.lib

vtktiff.lib

vtkverdict.lib

vtkViews.lib

vtkVolumeRendering.lib

vtkWidgets.lib

vtkzlib.lib

flann.lib

flann_cpp_s.lib

flann_cuda_s.lib

flann_s.lib

注:

  1. 这些库是在编译Release版本时得到的链接库,每个链接库的名称中都带有_release或者_s等信息,以区别于Debug版本。这些内容存储在相应库的lib文件夹下,如"C:\\Program Files\\PCL\\lib\\pcl_common_release.lib",可以通过编程序获取文件名,然后将文件名写入txt文件,之后将txt的内容复制到这里。
  2. 这里一定要注意,是双击Release|Win32来打开相应的属性窗口,跟上面提到的打开属性窗口的方式不一样。
  1. 打开计算机 à 系统属性 à 高级系统设置 à 环境变量,在用户环境变量中添加C:\Program Files\PCL\flann\bin;C:\Program files\PCL\bin;C:\Program Files\PCL\Boost\lib;C:\Program Files\PCL\VTK 5.8.0\lib\vtk-5.8; C:\Program Files\PCL\Eigen\bin。
  2. 如果你的用户变量里没有path,那么新建一个path变量,在添加就可以了(http://blog.sina.com.cn/s/blog_7b83134b0101acyb.html)。

在这之后,就完全完成了PCL的编译、安装、配置过程。在安装、编译、配置过程中看过不少人的博客,多谢各位的帮助。

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Windows 10 上使用 PCL(Point Cloud Library)和 PCLPy(Python bindings for PCL)需要进行以下步骤: 1. 安装 CMake CMake是一个跨平台的自动化构建工具,用于生成在多个平台和编译器上构建软件的构建过程。 可以从CMake官网下载Windows版本的安装文件进行安装。 2. 安装 Visual Studio PCL是使用C++编写的,因此需要安装Visual Studio。 可以从Visual Studio官网下载Visual Studio Community版本进行安装。 3. 安装 Boost PCL依赖于Boost,需要安装Boost。 可以从Boost官网下载Windows版本的安装文件进行安装。 4. 安装FLANN PCL使用FLANN(Fast Library for Approximate Nearest Neighbors)来进行最近邻搜索。 可以从FLANN官网下载Windows版本的安装文件进行安装。 5. 安装VTK PCL使用VTK(Visualization Toolkit)来进行可视化。 可以从VTK官网下载Windows版本的安装文件进行安装。 6. 编译PCL 下载PCL源代码并解压缩。 使用CMake配置PCL的编译选项。将“CMAKE_INSTALL_PREFIX”设置为PCL的安装路径,例如“C:\Program Files (x86)\PCL”。 点击“Configure”按钮,然后在弹出的对话框中选择Visual Studio版本。 点击“Generate”按钮,生成Visual Studio项目。 打开生成的Visual Studio项目,右键单击PCL项目并选择“Build”。 7. 编译PCLPy 下载PCLPy源代码并解压缩。 使用CMake配置PCLPy的编译选项。将“PCL_DIR”设置为PCL的安装路径。 点击“Configure”按钮,然后在弹出的对话框中选择Visual Studio版本。 点击“Generate”按钮,生成Visual Studio项目。 打开生成的Visual Studio项目,右键单击PCLPy项目并选择“Build”。 完成编译后,可以在Python中使用PCLPy进行点云处理。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值