1、PCL点云库简介
1.1 、什么是PCL点云库
PCL,全称为Point Cloud Library,即点云库,是一个专注于2D/3D图像和点云处理的大型开源项目。该项目最初由斯坦福大学的杰出计算机视觉专家Radu博士及其团队开发和维护,经过十余年的发展,目前(2024年12月)已更新至1.14.1版本。PCL点云库集成了众多尖端的点云处理算法,这些算法不仅包括基础的滤波、特征估计、表面重建、配准、模型拟合和分割等,还涵盖了更高级的功能,如点云数据的语义理解、场景解析以及动态环境下的实时处理。这些算法能够对含有噪声的点云数据进行有效过滤,去除异常值;能够将不同视角下的3D点云数据进行精确拼接,实现无缝的三维场景重建;能够从复杂场景中分割出特定的几何形状,如平面、柱体和球体,甚至更复杂的结构;还能够提取点云数据中的关键点并计算其描述符,以识别几何物体的外观特征,这对于机器人导航、自动驾驶车辆以及增强现实等领域至关重要。此外,PCL点云库还支持将点云数据转换为网格(mesh)形式,并提供直观的可视化展示,使得研究人员和开发者能够更直观地理解和分析三维数据。由于应用广泛,这里仅列举了部分功能,更多应用将在后续逐步介绍和学习。
PCL点云库是一个在3-clause BSD许可条款下发布的开源项目,允许用户免费用于商业和研究目的。作为一个跨平台的库,PCL已在Linux、MacOS、Windows以及Android系统上成功编译和部署,这得益于其灵活的架构和对不同操作系统底层特性的良好支持。为了便于开发,PCL点云库被划分为多个较小的代码库,这些代码库可以独立编译,从而允许开发者根据需要选择性地集成特定功能。这种模块化设计对于在计算能力或存储空间有限的平台上部署PCL至关重要,每个模块都相当于一个独立的工具库,它们可以单独更新和维护,极大地提高了库的可扩展性和灵活性。以下图1是PCL库中一些最重要的已发布模块,它们各自承担着不同的任务,共同构成了PCL库这个功能强大的点云处理生态系统。
图 1
各模块功能简要介绍如下:
滤波模块(filters):采样、去除离群点、特征提取、拟合估计等数据预处理;
点云特征模块(features): 实现多种三维特征计算,如曲面法线、曲率、边界点、主曲率,PFH和FPFH特征等;
点云关键点模块(keypoints): 实现不同的关键点的提取方法,决定在哪儿提取特征描述符,一般用于预处理;
点云配准模块(registration): 实现点云配准方法,如GICP和ICP等;
KD树模块 (kdtree):构建离散点云数据的拓扑结构的树状数据结构;
八叉树模块(octree):构建离散点云数据的拓扑结构的树状数据结构;
点云分割模块(segmentation): 实现点云聚类提取,通过采样一致性方法对参数模型(如平面、球面、直线等)进行模型拟合实现点云分割提取;
样本采样一致性(sample_consensus):以为 RANSAC为核心模块估计算法,其他的还有 (MLESAC)和(LMEDS)等;
点云表面重建模(surface): 实现表面重建技术,如网格重建(泊松重建)、Delaunay三角剖分和移动最小二乘平滑(MLS)等;
点云识别模块(recognition): 用于物体识别应用的算法。类似于2D的模板匹配应用在3D点云上;
点云输入输出IO模块(io): 实现数据的输入和输出操作,例如点云数据文件(PCD、PLY和STL)的读写操作;
点云可视化模块(visualization):将点云数据信息进行可视化,如三维点,法向量和和匹配对等,可根据参数设置不同可视化效果;
PCL 库的架构图如图2, PCL库架构采用模块化的C++模板库进行编写,并支持Python接口调用。PCL库依赖于多个第三方库,包括Boost、Eigen、FLANN、VTK、CUDA、OpenNI以及Qhull。PCL库中的所有模块和算法通过Boost库共享智能指针来传送数据的(PCL1.12.0后使用std中的智能指针),因而避免了多次拷贝系统中已存在的数据, 有效减少了系统资源的浪费。
图 2
PCL库各模块的依赖关系如下图3:
图3
2、PCL点云库的安装
在前面的初步介绍之后,相信各位已经对PCL库有了基础的认识。接下来,我们将从PCL库的安装步骤开始,引导大家深入探索PCL库的世界。2.1、 PCL库的下载与版本选择
到目前(2024年 12月)为主PCL版本已经更新到PCL1.14.1,PCL库官方 下载,由于网络原因官方下载可能较慢,已为大家提供百度网盘下载地址: 链接:百度网盘 请输入提取码 提取码:qxze,网盘中提供PCL1.8.0至最新PCL1.14.1版本程序,后序会随着官方版本持续更新,其中PCL库版本与VS版本匹配版本如下表,大家可以根据自己需求下载,没有必要下载所有文件。 PCL版本 | VS版本 | PCL版本 | VS版本 | PCL版本 | VS版本 |
PCL1.8.0 | VS2015 | PCL1.10.0 | VS2019 | PCL1.12.0 | VS2019 |
PCL1.8.1 | VS2015/2017 | PCL1.11.0 | VS2019 | pcl1.13.0 | VS2022 |
PCL1.9.0 | VS2017 | PCL1.11.1 | VS2019 | PCL1.14.0 | VS2022 |
注意需同时下载 exe和 pdb文件,exe文件用于程序的安装,pdb文件用于后期程序崩溃时问题的定位。 下载完成的文件如下图所示。
2.2、 PCL库安装
第1步:以管理员权限 运行PCL-1.12.0-AllInOne-msvc2019-win64.exe,点击下一步。
第2步:接受许可证,点击我接受。
第3步:添加PCL到系统PATH,对所有的用户,点击下一步
第4步:设置安装路径,点击下一步
第5步:继续点击下一步
第6步:选择所有组件,点击安装
在安装工程中可能会弹出如下框,意思为计算机中的PATH太多,PCL库的路径不能添加,需要我们后期手动添加,具体添加见后面VS中配准PCL库操作,所有直接点击“确定”。
第7步:完成安装,点击完成。
第8步: 将pcl-1.12.0-pdb-msvc2019-win64.zip解压,将所有.pdb文件拷贝到pcl\bin目录,如下图,至此完成PCL库的安装。
安装时需要注意:
1、安装为全英文路径
2、 建议安装到非系统盘
3、 添加PCL到系统PATH
2.3 、VS2019中配置PCL点云库
第1步:打开VS2019 新建一个空项目,项目名称为PCLLearn如下图,注意红框中的选项, Debug还是Release,活动平台要一定选x64。
第2步:在项目源文件中添加一个PClTestmain.cpp文件,内容如如下:
#include <iostream>
using namespace std;
int main(int argc,char *argv)
{
std::cout << "Hello PCL!" << std::endl;
system("pause");
return 0;
}
第3步:选择属性管理器——>单击Release| X64——>添加新项目属性列表。打开如下框,修改属性列表名称为PCL112VS2019.props,点击添加,结果如下。
第4步:单击刚创建的属性列表——>属性——>C/C++——>附加 包含目录
第5步: 点击右列,出现一个下拉列表,点击后出现编辑,点击进入,出现如下
第6步:添加附加包含目录如下内容:
D:\Program Files\PCL 1.12.0\3rdParty\VTK\include\vtk-9.0
D:\Program Files\PCL 1.12.0\3rdParty\Qhull\include
D:\Program Files\PCL 1.12.0\3rdParty\OpenNI2\include
D:\Program Files\PCL 1.12.0\3rdParty\FLANN\include
D:\Program Files\PCL 1.12.0\3rdParty\Eigen\eigen3
D:\Program Files\PCL 1.12.0\3rdParty\Boost\include\boost-1_76
D:\Program Files\PCL 1.12.0\include\pcl-1.12
添加完成结果如下,点击确定。
第7步:连接器->常规->附加库目录 -> 点击右列,出现一个下拉列表,点击后出现编辑,点击进入,出现如下框
第8步:添加如下库目录:
D:\Program Files\PCL 1.12.0\3rdParty\FLANN\lib
D:\Program Files\PCL 1.12.0\3rdParty\OpenNI2\lib
D:\Program Files\PCL 1.12.0\3rdParty\Qhull\lib
D:\Program Files\PCL 1.12.0\3rdParty\VTK\lib
D:\Program Files\PCL 1.12.0\3rdParty\Boost\lib
D:\Program Files\PCL 1.12.0\lib
添加完成结果如下,点击确定。
第9步:连接器->输入->附加依赖项,点击右列,出现一个下拉列表,点击后出现编辑,点击进入,出现如下框
将 PCL中各个库目录中的.lib文件名,拷贝到3中的框中点击确定,完成结果如下,点击确定,最后应用->确定
至此完成PCL库在VS2019中的配置。保存属性列表PCL112VS2019.props文件,可将其保存到你想要的文件夹,可以供其他项目使用,而不需要重复上面繁琐的配置操作。
PCL1.12.0 release版本.lib文件名列表
pcl_common.lib
pcl_features.lib
pcl_filters.lib
pcl_io_ply.lib
pcl_io.lib
pcl_kdtree.lib
pcl_keypoints.lib
pcl_ml.lib
pcl_octree.lib
pcl_outofcore.lib
pcl_people.lib
pcl_recognition.lib
pcl_registration.lib
pcl_sample_consensus.lib
pcl_search.lib
pcl_segmentation.lib
pcl_stereo.lib
pcl_surface.lib
pcl_tracking.lib
pcl_visualization.lib
libboost_atomic-vc142-mt-x64-1_76.lib
libboost_bzip2-vc142-mt-x64-1_76.lib
libboost_chrono-vc142-mt-x64-1_76.lib
libboost_container-vc142-mt-x64-1_76.lib
libboost_context-vc142-mt-x64-1_76.lib
libboost_contract-vc142-mt-x64-1_76.lib
libboost_coroutine-vc142-mt-x64-1_76.lib
libboost_date_time-vc142-mt-x64-1_76.lib
libboost_exception-vc142-mt-x64-1_76.lib
libboost_fiber-vc142-mt-x64-1_76.lib
libboost_filesystem-vc142-mt-x64-1_76.lib
libboost_graph-vc142-mt-x64-1_76.lib
libboost_graph_parallel-vc142-mt-x64-1_76.lib
libboost_iostreams-vc142-mt-x64-1_76.lib
libboost_json-vc142-mt-x64-1_76.lib
libboost_locale-vc142-mt-x64-1_76.lib
libboost_log-vc142-mt-x64-1_76.lib
libboost_log_setup-vc142-mt-x64-1_76.lib
libboost_math_c99-vc142-mt-x64-1_76.lib
libboost_math_c99f-vc142-mt-x64-1_76.lib
libboost_math_c99l-vc142-mt-x64-1_76.lib
libboost_math_tr1-vc142-mt-x64-1_76.lib
libboost_math_tr1f-vc142-mt-x64-1_76.lib
libboost_math_tr1l-vc142-mt-x64-1_76.lib
libboost_mpi-vc142-mt-x64-1_76.lib
libboost_nowide-vc142-mt-x64-1_76.lib
libboost_numpy38-vc142-mt-x64-1_76.lib
libboost_prg_exec_monitor-vc142-mt-x64-1_76.lib
libboost_program_options-vc142-mt-x64-1_76.lib
libboost_python38-vc142-mt-x64-1_76.lib
libboost_random-vc142-mt-x64-1_76.lib
libboost_regex-vc142-mt-x64-1_76.lib
libboost_serialization-vc142-mt-x64-1_76.lib
libboost_stacktrace_noop-vc142-mt-x64-1_76.lib
libboost_stacktrace_windbg_cached-vc142-mt-x64-1_76.lib
libboost_stacktrace_windbg-vc142-mt-x64-1_76.lib
libboost_system-vc142-mt-x64-1_76.lib
libboost_test_exec_monitor-vc142-mt-x64-1_76.lib
libboost_thread-vc142-mt-x64-1_76.lib
libboost_timer-vc142-mt-x64-1_76.lib
libboost_type_erasure-vc142-mt-x64-1_76.lib
libboost_unit_test_framework-vc142-mt-x64-1_76.lib
libboost_wave-vc142-mt-x64-1_76.lib
libboost_wserialization-vc142-mt-x64-1_76.lib
libboost_zlib-vc142-mt-x64-1_76.lib
flann.lib
flann_cpp.lib
flann_cpp_s.lib
flann_s.lib
qhull_r.lib
qhullcpp.lib
qhullstatic.lib
qhullstatic_r.lib
vtkChartsCore-9.0.lib
vtkCommonColor-9.0.lib
vtkCommonComputationalGeometry-9.0.lib
vtkCommonCore-9.0.lib
vtkCommonDataModel-9.0.lib
vtkCommonExecutionModel-9.0.lib
vtkCommonMath-9.0.lib
vtkCommonMisc-9.0.lib
vtkCommonSystem-9.0.lib
vtkCommonTransforms-9.0.lib
vtkDICOMParser-9.0.lib
vtkDomainsChemistry-9.0.lib
vtkDomainsChemistryOpenGL2-9.0.lib
vtkdoubleconversion-9.0.lib
vtkexodusII-9.0.lib
vtkexpat-9.0.lib
vtkFiltersAMR-9.0.lib
vtkFiltersCore-9.0.lib
vtkFiltersExtraction-9.0.lib
vtkFiltersFlowPaths-9.0.lib
vtkFiltersGeneral-9.0.lib
vtkFiltersGeneric-9.0.lib
vtkFiltersGeometry-9.0.lib
vtkFiltersHybrid-9.0.lib
vtkFiltersHyperTree-9.0.lib
vtkFiltersImaging-9.0.lib
vtkFiltersModeling-9.0.lib
vtkFiltersParallel-9.0.lib
vtkFiltersParallelImaging-9.0.lib
vtkFiltersPoints-9.0.lib
vtkFiltersProgrammable-9.0.lib
vtkFiltersSelection-9.0.lib
vtkFiltersSMP-9.0.lib
vtkFiltersSources-9.0.lib
vtkFiltersStatistics-9.0.lib
vtkFiltersTexture-9.0.lib
vtkFiltersTopology-9.0.lib
vtkFiltersVerdict-9.0.lib
vtkfreetype-9.0.lib
vtkGeovisCore-9.0.lib
vtkgl2ps-9.0.lib
vtkglew-9.0.lib
vtkhdf5-9.0.lib
vtkhdf5_hl-9.0.lib
vtkImagingColor-9.0.lib
vtkImagingCore-9.0.lib
vtkImagingFourier-9.0.lib
vtkImagingGeneral-9.0.lib
vtkImagingHybrid-9.0.lib
vtkImagingMath-9.0.lib
vtkImagingMorphological-9.0.lib
vtkImagingSources-9.0.lib
vtkImagingStatistics-9.0.lib
vtkImagingStencil-9.0.lib
vtkInfovisCore-9.0.lib
vtkInfovisLayout-9.0.lib
vtkInteractionImage-9.0.lib
vtkInteractionStyle-9.0.lib
vtkInteractionWidgets-9.0.lib
vtkIOAMR-9.0.lib
vtkIOAsynchronous-9.0.lib
vtkIOCityGML-9.0.lib
vtkIOCore-9.0.lib
vtkIOEnSight-9.0.lib
vtkIOExodus-9.0.lib
vtkIOExport-9.0.lib
vtkIOExportGL2PS-9.0.lib
vtkIOExportPDF-9.0.lib
vtkIOGeometry-9.0.lib
vtkIOImage-9.0.lib
vtkIOImport-9.0.lib
vtkIOInfovis-9.0.lib
vtkIOLegacy-9.0.lib
vtkIOLSDyna-9.0.lib
vtkIOMINC-9.0.lib
vtkIOMotionFX-9.0.lib
vtkIOMovie-9.0.lib
vtkIONetCDF-9.0.lib
vtkIOOggTheora-9.0.lib
vtkIOParallel-9.0.lib
vtkIOParallelXML-9.0.lib
vtkIOPLY-9.0.lib
vtkIOSegY-9.0.lib
vtkIOSQL-9.0.lib
vtkIOTecplotTable-9.0.lib
vtkIOVeraOut-9.0.lib
vtkIOVideo-9.0.lib
vtkIOXML-9.0.lib
vtkIOXMLParser-9.0.lib
vtkjpeg-9.0.lib
vtkjsoncpp-9.0.lib
vtklibharu-9.0.lib
vtklibproj-9.0.lib
vtklibxml2-9.0.lib
vtkloguru-9.0.lib
vtklz4-9.0.lib
vtklzma-9.0.lib
vtkmetaio-9.0.lib
vtknetcdf-9.0.lib
vtkogg-9.0.lib
vtkParallelCore-9.0.lib
vtkParallelDIY-9.0.lib
vtkpng-9.0.lib
vtkpugixml-9.0.lib
vtkRenderingAnnotation-9.0.lib
vtkRenderingContext2D-9.0.lib
vtkRenderingContextOpenGL2-9.0.lib
vtkRenderingCore-9.0.lib
vtkRenderingFreeType-9.0.lib
vtkRenderingGL2PSOpenGL2-9.0.lib
vtkRenderingImage-9.0.lib
vtkRenderingLabel-9.0.lib
vtkRenderingLOD-9.0.lib
vtkRenderingOpenGL2-9.0.lib
vtkRenderingSceneGraph-9.0.lib
vtkRenderingUI-9.0.lib
vtkRenderingVolume-9.0.lib
vtkRenderingVolumeOpenGL2-9.0.lib
vtkRenderingVtkJS-9.0.lib
vtksqlite-9.0.lib
vtksys-9.0.lib
vtkTestingRendering-9.0.lib
vtktheora-9.0.lib
vtktiff-9.0.lib
vtkverdict-9.0.lib
vtkViewsContext2D-9.0.lib
vtkViewsCore-9.0.lib
vtkViewsInfovis-9.0.lib
vtkWrappingTools-9.0.lib
vtkzlib-9.0.lib
OpenNI2.lib
PCL1.12.0 debug版本.lib文件名列表
pcl_commond.lib
pcl_featuresd.lib
pcl_filtersd.lib
pcl_iod.lib
pcl_io_plyd.lib
pcl_kdtreed.lib
pcl_keypointsd.lib
pcl_mld.lib
pcl_octreed.lib
pcl_outofcored.lib
pcl_peopled.lib
pcl_recognitiond.lib
pcl_registrationd.lib
pcl_sample_consensusd.lib
pcl_searchd.lib
pcl_segmentationd.lib
pcl_stereod.lib
pcl_surfaced.lib
pcl_trackingd.lib
pcl_visualizationd.lib
libboost_atomic-vc142-mt-gd-x64-1_76.lib
libboost_bzip2-vc142-mt-gd-x64-1_76.lib
libboost_chrono-vc142-mt-gd-x64-1_76.lib
libboost_container-vc142-mt-gd-x64-1_76.lib
libboost_context-vc142-mt-gd-x64-1_76.lib
libboost_contract-vc142-mt-gd-x64-1_76.lib
libboost_coroutine-vc142-mt-gd-x64-1_76.lib
libboost_date_time-vc142-mt-gd-x64-1_76.lib
libboost_exception-vc142-mt-gd-x64-1_76.lib
libboost_fiber-vc142-mt-gd-x64-1_76.lib
libboost_filesystem-vc142-mt-gd-x64-1_76.lib
libboost_graph-vc142-mt-gd-x64-1_76.lib
libboost_graph_parallel-vc142-mt-gd-x64-1_76.lib
libboost_iostreams-vc142-mt-gd-x64-1_76.lib
libboost_json-vc142-mt-gd-x64-1_76.lib
libboost_locale-vc142-mt-gd-x64-1_76.lib
libboost_log-vc142-mt-gd-x64-1_76.lib
libboost_log_setup-vc142-mt-gd-x64-1_76.lib
libboost_math_c99-vc142-mt-gd-x64-1_76.lib
libboost_math_c99f-vc142-mt-gd-x64-1_76.lib
libboost_math_c99l-vc142-mt-gd-x64-1_76.lib
libboost_math_tr1-vc142-mt-gd-x64-1_76.lib
libboost_math_tr1f-vc142-mt-gd-x64-1_76.lib
libboost_math_tr1l-vc142-mt-gd-x64-1_76.lib
libboost_mpi-vc142-mt-gd-x64-1_76.lib
libboost_nowide-vc142-mt-gd-x64-1_76.lib
libboost_numpy38-vc142-mt-gd-x64-1_76.lib
libboost_prg_exec_monitor-vc142-mt-gd-x64-1_76.lib
libboost_program_options-vc142-mt-gd-x64-1_76.lib
libboost_python38-vc142-mt-gd-x64-1_76.lib
libboost_random-vc142-mt-gd-x64-1_76.lib
libboost_regex-vc142-mt-gd-x64-1_76.lib
libboost_serialization-vc142-mt-gd-x64-1_76.lib
libboost_stacktrace_noop-vc142-mt-gd-x64-1_76.lib
libboost_stacktrace_windbg-vc142-mt-gd-x64-1_76.lib
libboost_stacktrace_windbg_cached-vc142-mt-gd-x64-1_76.lib
libboost_system-vc142-mt-gd-x64-1_76.lib
libboost_test_exec_monitor-vc142-mt-gd-x64-1_76.lib
libboost_thread-vc142-mt-gd-x64-1_76.lib
libboost_timer-vc142-mt-gd-x64-1_76.lib
libboost_type_erasure-vc142-mt-gd-x64-1_76.lib
libboost_unit_test_framework-vc142-mt-gd-x64-1_76.lib
libboost_wave-vc142-mt-gd-x64-1_76.lib
libboost_wserialization-vc142-mt-gd-x64-1_76.lib
libboost_zlib-vc142-mt-gd-x64-1_76.lib
flann-gd.lib
flann_cpp-gd.lib
flann_cpp_s-gd.lib
flann_s-gd.lib
OpenNI2.lib
qhullcpp_d.lib
qhullstatic_d.lib
qhullstatic_rd.lib
qhull_rd.lib
vtkChartsCore-9.0d.lib
vtkCommonColor-9.0d.lib
vtkCommonComputationalGeometry-9.0d.lib
vtkCommonCore-9.0d.lib
vtkCommonDataModel-9.0d.lib
vtkCommonExecutionModel-9.0d.lib
vtkCommonMath-9.0d.lib
vtkCommonMisc-9.0d.lib
vtkCommonSystem-9.0d.lib
vtkCommonTransforms-9.0d.lib
vtkDICOMParser-9.0d.lib
vtkDomainsChemistry-9.0d.lib
vtkDomainsChemistryOpenGL2-9.0d.lib
vtkdoubleconversion-9.0d.lib
vtkexodusII-9.0d.lib
vtkexpat-9.0d.lib
vtkFiltersAMR-9.0d.lib
vtkFiltersCore-9.0d.lib
vtkFiltersExtraction-9.0d.lib
vtkFiltersFlowPaths-9.0d.lib
vtkFiltersGeneral-9.0d.lib
vtkFiltersGeneric-9.0d.lib
vtkFiltersGeometry-9.0d.lib
vtkFiltersHybrid-9.0d.lib
vtkFiltersHyperTree-9.0d.lib
vtkFiltersImaging-9.0d.lib
vtkFiltersModeling-9.0d.lib
vtkFiltersParallel-9.0d.lib
vtkFiltersParallelImaging-9.0d.lib
vtkFiltersPoints-9.0d.lib
vtkFiltersProgrammable-9.0d.lib
vtkFiltersSelection-9.0d.lib
vtkFiltersSMP-9.0d.lib
vtkFiltersSources-9.0d.lib
vtkFiltersStatistics-9.0d.lib
vtkFiltersTexture-9.0d.lib
vtkFiltersTopology-9.0d.lib
vtkFiltersVerdict-9.0d.lib
vtkfreetype-9.0d.lib
vtkGeovisCore-9.0d.lib
vtkgl2ps-9.0d.lib
vtkglew-9.0d.lib
vtkhdf5-9.0d.lib
vtkhdf5_hl-9.0d.lib
vtkImagingColor-9.0d.lib
vtkImagingCore-9.0d.lib
vtkImagingFourier-9.0d.lib
vtkImagingGeneral-9.0d.lib
vtkImagingHybrid-9.0d.lib
vtkImagingMath-9.0d.lib
vtkImagingMorphological-9.0d.lib
vtkImagingSources-9.0d.lib
vtkImagingStatistics-9.0d.lib
vtkImagingStencil-9.0d.lib
vtkInfovisCore-9.0d.lib
vtkInfovisLayout-9.0d.lib
vtkInteractionImage-9.0d.lib
vtkInteractionStyle-9.0d.lib
vtkInteractionWidgets-9.0d.lib
vtkIOAMR-9.0d.lib
vtkIOAsynchronous-9.0d.lib
vtkIOCityGML-9.0d.lib
vtkIOCore-9.0d.lib
vtkIOEnSight-9.0d.lib
vtkIOExodus-9.0d.lib
vtkIOExport-9.0d.lib
vtkIOExportGL2PS-9.0d.lib
vtkIOExportPDF-9.0d.lib
vtkIOGeometry-9.0d.lib
vtkIOImage-9.0d.lib
vtkIOImport-9.0d.lib
vtkIOInfovis-9.0d.lib
vtkIOLegacy-9.0d.lib
vtkIOLSDyna-9.0d.lib
vtkIOMINC-9.0d.lib
vtkIOMotionFX-9.0d.lib
vtkIOMovie-9.0d.lib
vtkIONetCDF-9.0d.lib
vtkIOOggTheora-9.0d.lib
vtkIOParallel-9.0d.lib
vtkIOParallelXML-9.0d.lib
vtkIOPLY-9.0d.lib
vtkIOSegY-9.0d.lib
vtkIOSQL-9.0d.lib
vtkIOTecplotTable-9.0d.lib
vtkIOVeraOut-9.0d.lib
vtkIOVideo-9.0d.lib
vtkIOXML-9.0d.lib
vtkIOXMLParser-9.0d.lib
vtkjpeg-9.0d.lib
vtkjsoncpp-9.0d.lib
vtklibharu-9.0d.lib
vtklibproj-9.0d.lib
vtklibxml2-9.0d.lib
vtkloguru-9.0d.lib
vtklz4-9.0d.lib
vtklzma-9.0d.lib
vtkmetaio-9.0d.lib
vtknetcdf-9.0d.lib
vtkogg-9.0d.lib
vtkParallelCore-9.0d.lib
vtkParallelDIY-9.0d.lib
vtkpng-9.0d.lib
vtkpugixml-9.0d.lib
vtkRenderingAnnotation-9.0d.lib
vtkRenderingContext2D-9.0d.lib
vtkRenderingContextOpenGL2-9.0d.lib
vtkRenderingCore-9.0d.lib
vtkRenderingFreeType-9.0d.lib
vtkRenderingGL2PSOpenGL2-9.0d.lib
vtkRenderingImage-9.0d.lib
vtkRenderingLabel-9.0d.lib
vtkRenderingLOD-9.0d.lib
vtkRenderingOpenGL2-9.0d.lib
vtkRenderingSceneGraph-9.0d.lib
vtkRenderingUI-9.0d.lib
vtkRenderingVolume-9.0d.lib
vtkRenderingVolumeOpenGL2-9.0d.lib
vtkRenderingVtkJS-9.0d.lib
vtksqlite-9.0d.lib
vtksys-9.0d.lib
vtkTestingRendering-9.0d.lib
vtktheora-9.0d.lib
vtktiff-9.0d.lib
vtkverdict-9.0d.lib
vtkViewsContext2D-9.0d.lib
vtkViewsCore-9.0d.lib
vtkViewsInfovis-9.0d.lib
vtkWrappingTools-9.0d.lib
vtkzlib-9.0d.lib
获取lib文件名获取技巧:
因为lib文件较多,不可能手动输入或者一一的复制文件,建议先采用bat文件批处理,具体如下,新建一个bat文件,输入内容如下,注意以下方法包含了所以文件名可能的格式要根据自己的文件名修改相应的文件名,下面有以为Boost库的例子。
@echo off
dir . /b >list.txt
dir /b *.lib > filename.txt
dir /b *debug.lib > filename_debug.txt
dir /b *-gd.lib > filename_gd.txt
dir /b *_d.lib > filename_d.txt
dir /b *release.lib > filename_release.txt
exit
然后在相应的lib文件夹下面运行bat文件,即可得到对应的lib文件名,后面会更新给出Python代码自动获取lib文件名。
以Boost库为例的代码如下:
@echo off
#dir . /b >list.txt
dir /b *-mt-x64-1_72.lib > filename.txt
exit
2.4、手动添加PCL库到系统PATH
1、打开电脑属性->高级系统设置->环境变量
2、系统变量->Path->编辑->新建-添加3中框的内容
2.5:PCL库的第一个demo
将PClTestmain.cpp文件的内容修改如下:
#include <iostream>
#include <pcl/pcl_config.h>
using namespace std;
int main(int argc,char *argv)
{
std::cout << "PCL Version: " << PCL_VERSION_PRETTY << std::endl;
std::cout << "Hello PCL!" << std::endl;
system("pause");
return 0;
}
编译运行,输出结果如下,表示PCL库在VS2019中安装配置成功!
至此完成第一节PCL库的简单介绍和安装操作,下一节我们将进入《PCL库中点云基本知识和数据类型结构》的学习。
1、PCL点云库简介
1.1 、什么是PCL点云库
PCL,全称为Point Cloud Library,即点云库,是一个专注于2D/3D图像和点云处理的大型开源项目。该项目最初由斯坦福大学的杰出计算机视觉专家Radu博士及其团队开发和维护,经过十余年的发展,目前(2024年12月)已更新至1.14.1版本。PCL点云库集成了众多尖端的点云处理算法,这些算法不仅包括基础的滤波、特征估计、表面重建、配准、模型拟合和分割等,还涵盖了更高级的功能,如点云数据的语义理解、场景解析以及动态环境下的实时处理。这些算法能够对含有噪声的点云数据进行有效过滤,去除异常值;能够将不同视角下的3D点云数据进行精确拼接,实现无缝的三维场景重建;能够从复杂场景中分割出特定的几何形状,如平面、柱体和球体,甚至更复杂的结构;还能够提取点云数据中的关键点并计算其描述符,以识别几何物体的外观特征,这对于机器人导航、自动驾驶车辆以及增强现实等领域至关重要。此外,PCL点云库还支持将点云数据转换为网格(mesh)形式,并提供直观的可视化展示,使得研究人员和开发者能够更直观地理解和分析三维数据。由于应用广泛,这里仅列举了部分功能,更多应用将在后续逐步介绍和学习。
PCL点云库是一个在3-clause BSD许可条款下发布的开源项目,允许用户免费用于商业和研究目的。作为一个跨平台的库,PCL已在Linux、MacOS、Windows以及Android系统上成功编译和部署,这得益于其灵活的架构和对不同操作系统底层特性的良好支持。为了便于开发,PCL点云库被划分为多个较小的代码库,这些代码库可以独立编译,从而允许开发者根据需要选择性地集成特定功能。这种模块化设计对于在计算能力或存储空间有限的平台上部署PCL至关重要,每个模块都相当于一个独立的工具库,它们可以单独更新和维护,极大地提高了库的可扩展性和灵活性。以下图1是PCL库中一些最重要的已发布模块,它们各自承担着不同的任务,共同构成了PCL库这个功能强大的点云处理生态系统。
图 1
各模块功能简要介绍如下:
滤波模块(filters):采样、去除离群点、特征提取、拟合估计等数据预处理;
点云特征模块(features): 实现多种三维特征计算,如曲面法线、曲率、边界点、主曲率,PFH和FPFH特征等;
点云关键点模块(keypoints): 实现不同的关键点的提取方法,决定在哪儿提取特征描述符,一般用于预处理;
点云配准模块(registration): 实现点云配准方法,如GICP和ICP等;
KD树模块 (kdtree):构建离散点云数据的拓扑结构的树状数据结构;
八叉树模块(octree):构建离散点云数据的拓扑结构的树状数据结构;
点云分割模块(segmentation): 实现点云聚类提取,通过采样一致性方法对参数模型(如平面、球面、直线等)进行模型拟合实现点云分割提取;
样本采样一致性(sample_consensus):以为 RANSAC为核心模块估计算法,其他的还有 (MLESAC)和(LMEDS)等;
点云表面重建模(surface): 实现表面重建技术,如网格重建(泊松重建)、Delaunay三角剖分和移动最小二乘平滑(MLS)等;
点云识别模块(recognition): 用于物体识别应用的算法。类似于2D的模板匹配应用在3D点云上;
点云输入输出IO模块(io): 实现数据的输入和输出操作,例如点云数据文件(PCD、PLY和STL)的读写操作;
点云可视化模块(visualization):将点云数据信息进行可视化,如三维点,法向量和和匹配对等,可根据参数设置不同可视化效果;
PCL 库的架构图如图2, PCL库架构采用模块化的C++模板库进行编写,并支持Python接口调用。PCL库依赖于多个第三方库,包括Boost、Eigen、FLANN、VTK、CUDA、OpenNI以及Qhull。PCL库中的所有模块和算法通过Boost库共享智能指针来传送数据的(PCL1.12.0后使用std中的智能指针),因而避免了多次拷贝系统中已存在的数据, 有效减少了系统资源的浪费。
图 2
PCL库各模块的依赖关系如下图3:
图3
2、PCL点云库的安装
在前面的初步介绍之后,相信各位已经对PCL库有了基础的认识。接下来,我们将从PCL库的安装步骤开始,引导大家深入探索PCL库的世界。2.1、 PCL库的下载与版本选择
到目前(2024年 12月)为主PCL版本已经更新到PCL1.14.1,PCL库官方 下载,由于网络原因官方下载可能较慢,已为大家提供百度网盘下载地址: 链接:百度网盘 请输入提取码 提取码:qxze,网盘中提供PCL1.8.0至最新PCL1.14.1版本程序,后序会随着官方版本持续更新,其中PCL库版本与VS版本匹配版本如下表,大家可以根据自己需求下载,没有必要下载所有文件。 PCL版本 | VS版本 | PCL版本 | VS版本 | PCL版本 | VS版本 |
PCL1.8.0 | VS2015 | PCL1.10.0 | VS2019 | PCL1.12.0 | VS2019 |
PCL1.8.1 | VS2015/2017 | PCL1.11.0 | VS2019 | pcl1.13.0 | VS2022 |
PCL1.9.0 | VS2017 | PCL1.11.1 | VS2019 | PCL1.14.0 | VS2022 |
注意需同时下载 exe和 pdb文件,exe文件用于程序的安装,pdb文件用于后期程序崩溃时问题的定位。 下载完成的文件如下图所示。
2.2、 PCL库安装
第1步:以管理员权限 运行PCL-1.12.0-AllInOne-msvc2019-win64.exe,点击下一步。
第2步:接受许可证,点击我接受。
第3步:添加PCL到系统PATH,对所有的用户,点击下一步
第4步:设置安装路径,点击下一步
第5步:继续点击下一步
第6步:选择所有组件,点击安装
在安装工程中可能会弹出如下框,意思为计算机中的PATH太多,PCL库的路径不能添加,需要我们后期手动添加,具体添加见后面VS中配准PCL库操作,所有直接点击“确定”。
第7步:完成安装,点击完成。
第8步: 将pcl-1.12.0-pdb-msvc2019-win64.zip解压,将所有.pdb文件拷贝到pcl\bin目录,如下图,至此完成PCL库的安装。
安装时需要注意:
1、安装为全英文路径
2、 建议安装到非系统盘
3、 添加PCL到系统PATH
2.3 、VS2019中配置PCL点云库
第1步:打开VS2019 新建一个空项目,项目名称为PCLLearn如下图,注意红框中的选项, Debug还是Release,活动平台要一定选x64。
第2步:在项目源文件中添加一个PClTestmain.cpp文件,内容如如下:
#include <iostream>
using namespace std;
int main(int argc,char *argv)
{
std::cout << "Hello PCL!" << std::endl;
system("pause");
return 0;
}
第3步:选择属性管理器——>单击Release| X64——>添加新项目属性列表。打开如下框,修改属性列表名称为PCL112VS2019.props,点击添加,结果如下。
第4步:单击刚创建的属性列表——>属性——>C/C++——>附加 包含目录
第5步: 点击右列,出现一个下拉列表,点击后出现编辑,点击进入,出现如下
第6步:添加附加包含目录如下内容:
D:\Program Files\PCL 1.12.0\3rdParty\VTK\include\vtk-9.0
D:\Program Files\PCL 1.12.0\3rdParty\Qhull\include
D:\Program Files\PCL 1.12.0\3rdParty\OpenNI2\include
D:\Program Files\PCL 1.12.0\3rdParty\FLANN\include
D:\Program Files\PCL 1.12.0\3rdParty\Eigen\eigen3
D:\Program Files\PCL 1.12.0\3rdParty\Boost\include\boost-1_76
D:\Program Files\PCL 1.12.0\include\pcl-1.12
添加完成结果如下,点击确定。
第7步:连接器->常规->附加库目录 -> 点击右列,出现一个下拉列表,点击后出现编辑,点击进入,出现如下框
第8步:添加如下库目录:
D:\Program Files\PCL 1.12.0\3rdParty\FLANN\lib
D:\Program Files\PCL 1.12.0\3rdParty\OpenNI2\lib
D:\Program Files\PCL 1.12.0\3rdParty\Qhull\lib
D:\Program Files\PCL 1.12.0\3rdParty\VTK\lib
D:\Program Files\PCL 1.12.0\3rdParty\Boost\lib
D:\Program Files\PCL 1.12.0\lib
添加完成结果如下,点击确定。
第9步:连接器->输入->附加依赖项,点击右列,出现一个下拉列表,点击后出现编辑,点击进入,出现如下框
将 PCL中各个库目录中的.lib文件名,拷贝到3中的框中点击确定,完成结果如下,点击确定,最后应用->确定
至此完成PCL库在VS2019中的配置。保存属性列表PCL112VS2019.props文件,可将其保存到你想要的文件夹,可以供其他项目使用,而不需要重复上面繁琐的配置操作。
PCL1.12.0 release版本.lib文件名列表
pcl_common.lib
pcl_features.lib
pcl_filters.lib
pcl_io_ply.lib
pcl_io.lib
pcl_kdtree.lib
pcl_keypoints.lib
pcl_ml.lib
pcl_octree.lib
pcl_outofcore.lib
pcl_people.lib
pcl_recognition.lib
pcl_registration.lib
pcl_sample_consensus.lib
pcl_search.lib
pcl_segmentation.lib
pcl_stereo.lib
pcl_surface.lib
pcl_tracking.lib
pcl_visualization.lib
libboost_atomic-vc142-mt-x64-1_76.lib
libboost_bzip2-vc142-mt-x64-1_76.lib
libboost_chrono-vc142-mt-x64-1_76.lib
libboost_container-vc142-mt-x64-1_76.lib
libboost_context-vc142-mt-x64-1_76.lib
libboost_contract-vc142-mt-x64-1_76.lib
libboost_coroutine-vc142-mt-x64-1_76.lib
libboost_date_time-vc142-mt-x64-1_76.lib
libboost_exception-vc142-mt-x64-1_76.lib
libboost_fiber-vc142-mt-x64-1_76.lib
libboost_filesystem-vc142-mt-x64-1_76.lib
libboost_graph-vc142-mt-x64-1_76.lib
libboost_graph_parallel-vc142-mt-x64-1_76.lib
libboost_iostreams-vc142-mt-x64-1_76.lib
libboost_json-vc142-mt-x64-1_76.lib
libboost_locale-vc142-mt-x64-1_76.lib
libboost_log-vc142-mt-x64-1_76.lib
libboost_log_setup-vc142-mt-x64-1_76.lib
libboost_math_c99-vc142-mt-x64-1_76.lib
libboost_math_c99f-vc142-mt-x64-1_76.lib
libboost_math_c99l-vc142-mt-x64-1_76.lib
libboost_math_tr1-vc142-mt-x64-1_76.lib
libboost_math_tr1f-vc142-mt-x64-1_76.lib
libboost_math_tr1l-vc142-mt-x64-1_76.lib
libboost_mpi-vc142-mt-x64-1_76.lib
libboost_nowide-vc142-mt-x64-1_76.lib
libboost_numpy38-vc142-mt-x64-1_76.lib
libboost_prg_exec_monitor-vc142-mt-x64-1_76.lib
libboost_program_options-vc142-mt-x64-1_76.lib
libboost_python38-vc142-mt-x64-1_76.lib
libboost_random-vc142-mt-x64-1_76.lib
libboost_regex-vc142-mt-x64-1_76.lib
libboost_serialization-vc142-mt-x64-1_76.lib
libboost_stacktrace_noop-vc142-mt-x64-1_76.lib
libboost_stacktrace_windbg_cached-vc142-mt-x64-1_76.lib
libboost_stacktrace_windbg-vc142-mt-x64-1_76.lib
libboost_system-vc142-mt-x64-1_76.lib
libboost_test_exec_monitor-vc142-mt-x64-1_76.lib
libboost_thread-vc142-mt-x64-1_76.lib
libboost_timer-vc142-mt-x64-1_76.lib
libboost_type_erasure-vc142-mt-x64-1_76.lib
libboost_unit_test_framework-vc142-mt-x64-1_76.lib
libboost_wave-vc142-mt-x64-1_76.lib
libboost_wserialization-vc142-mt-x64-1_76.lib
libboost_zlib-vc142-mt-x64-1_76.lib
flann.lib
flann_cpp.lib
flann_cpp_s.lib
flann_s.lib
qhull_r.lib
qhullcpp.lib
qhullstatic.lib
qhullstatic_r.lib
vtkChartsCore-9.0.lib
vtkCommonColor-9.0.lib
vtkCommonComputationalGeometry-9.0.lib
vtkCommonCore-9.0.lib
vtkCommonDataModel-9.0.lib
vtkCommonExecutionModel-9.0.lib
vtkCommonMath-9.0.lib
vtkCommonMisc-9.0.lib
vtkCommonSystem-9.0.lib
vtkCommonTransforms-9.0.lib
vtkDICOMParser-9.0.lib
vtkDomainsChemistry-9.0.lib
vtkDomainsChemistryOpenGL2-9.0.lib
vtkdoubleconversion-9.0.lib
vtkexodusII-9.0.lib
vtkexpat-9.0.lib
vtkFiltersAMR-9.0.lib
vtkFiltersCore-9.0.lib
vtkFiltersExtraction-9.0.lib
vtkFiltersFlowPaths-9.0.lib
vtkFiltersGeneral-9.0.lib
vtkFiltersGeneric-9.0.lib
vtkFiltersGeometry-9.0.lib
vtkFiltersHybrid-9.0.lib
vtkFiltersHyperTree-9.0.lib
vtkFiltersImaging-9.0.lib
vtkFiltersModeling-9.0.lib
vtkFiltersParallel-9.0.lib
vtkFiltersParallelImaging-9.0.lib
vtkFiltersPoints-9.0.lib
vtkFiltersProgrammable-9.0.lib
vtkFiltersSelection-9.0.lib
vtkFiltersSMP-9.0.lib
vtkFiltersSources-9.0.lib
vtkFiltersStatistics-9.0.lib
vtkFiltersTexture-9.0.lib
vtkFiltersTopology-9.0.lib
vtkFiltersVerdict-9.0.lib
vtkfreetype-9.0.lib
vtkGeovisCore-9.0.lib
vtkgl2ps-9.0.lib
vtkglew-9.0.lib
vtkhdf5-9.0.lib
vtkhdf5_hl-9.0.lib
vtkImagingColor-9.0.lib
vtkImagingCore-9.0.lib
vtkImagingFourier-9.0.lib
vtkImagingGeneral-9.0.lib
vtkImagingHybrid-9.0.lib
vtkImagingMath-9.0.lib
vtkImagingMorphological-9.0.lib
vtkImagingSources-9.0.lib
vtkImagingStatistics-9.0.lib
vtkImagingStencil-9.0.lib
vtkInfovisCore-9.0.lib
vtkInfovisLayout-9.0.lib
vtkInteractionImage-9.0.lib
vtkInteractionStyle-9.0.lib
vtkInteractionWidgets-9.0.lib
vtkIOAMR-9.0.lib
vtkIOAsynchronous-9.0.lib
vtkIOCityGML-9.0.lib
vtkIOCore-9.0.lib
vtkIOEnSight-9.0.lib
vtkIOExodus-9.0.lib
vtkIOExport-9.0.lib
vtkIOExportGL2PS-9.0.lib
vtkIOExportPDF-9.0.lib
vtkIOGeometry-9.0.lib
vtkIOImage-9.0.lib
vtkIOImport-9.0.lib
vtkIOInfovis-9.0.lib
vtkIOLegacy-9.0.lib
vtkIOLSDyna-9.0.lib
vtkIOMINC-9.0.lib
vtkIOMotionFX-9.0.lib
vtkIOMovie-9.0.lib
vtkIONetCDF-9.0.lib
vtkIOOggTheora-9.0.lib
vtkIOParallel-9.0.lib
vtkIOParallelXML-9.0.lib
vtkIOPLY-9.0.lib
vtkIOSegY-9.0.lib
vtkIOSQL-9.0.lib
vtkIOTecplotTable-9.0.lib
vtkIOVeraOut-9.0.lib
vtkIOVideo-9.0.lib
vtkIOXML-9.0.lib
vtkIOXMLParser-9.0.lib
vtkjpeg-9.0.lib
vtkjsoncpp-9.0.lib
vtklibharu-9.0.lib
vtklibproj-9.0.lib
vtklibxml2-9.0.lib
vtkloguru-9.0.lib
vtklz4-9.0.lib
vtklzma-9.0.lib
vtkmetaio-9.0.lib
vtknetcdf-9.0.lib
vtkogg-9.0.lib
vtkParallelCore-9.0.lib
vtkParallelDIY-9.0.lib
vtkpng-9.0.lib
vtkpugixml-9.0.lib
vtkRenderingAnnotation-9.0.lib
vtkRenderingContext2D-9.0.lib
vtkRenderingContextOpenGL2-9.0.lib
vtkRenderingCore-9.0.lib
vtkRenderingFreeType-9.0.lib
vtkRenderingGL2PSOpenGL2-9.0.lib
vtkRenderingImage-9.0.lib
vtkRenderingLabel-9.0.lib
vtkRenderingLOD-9.0.lib
vtkRenderingOpenGL2-9.0.lib
vtkRenderingSceneGraph-9.0.lib
vtkRenderingUI-9.0.lib
vtkRenderingVolume-9.0.lib
vtkRenderingVolumeOpenGL2-9.0.lib
vtkRenderingVtkJS-9.0.lib
vtksqlite-9.0.lib
vtksys-9.0.lib
vtkTestingRendering-9.0.lib
vtktheora-9.0.lib
vtktiff-9.0.lib
vtkverdict-9.0.lib
vtkViewsContext2D-9.0.lib
vtkViewsCore-9.0.lib
vtkViewsInfovis-9.0.lib
vtkWrappingTools-9.0.lib
vtkzlib-9.0.lib
OpenNI2.lib
PCL1.12.0 debug版本.lib文件名列表
pcl_commond.lib
pcl_featuresd.lib
pcl_filtersd.lib
pcl_iod.lib
pcl_io_plyd.lib
pcl_kdtreed.lib
pcl_keypointsd.lib
pcl_mld.lib
pcl_octreed.lib
pcl_outofcored.lib
pcl_peopled.lib
pcl_recognitiond.lib
pcl_registrationd.lib
pcl_sample_consensusd.lib
pcl_searchd.lib
pcl_segmentationd.lib
pcl_stereod.lib
pcl_surfaced.lib
pcl_trackingd.lib
pcl_visualizationd.lib
libboost_atomic-vc142-mt-gd-x64-1_76.lib
libboost_bzip2-vc142-mt-gd-x64-1_76.lib
libboost_chrono-vc142-mt-gd-x64-1_76.lib
libboost_container-vc142-mt-gd-x64-1_76.lib
libboost_context-vc142-mt-gd-x64-1_76.lib
libboost_contract-vc142-mt-gd-x64-1_76.lib
libboost_coroutine-vc142-mt-gd-x64-1_76.lib
libboost_date_time-vc142-mt-gd-x64-1_76.lib
libboost_exception-vc142-mt-gd-x64-1_76.lib
libboost_fiber-vc142-mt-gd-x64-1_76.lib
libboost_filesystem-vc142-mt-gd-x64-1_76.lib
libboost_graph-vc142-mt-gd-x64-1_76.lib
libboost_graph_parallel-vc142-mt-gd-x64-1_76.lib
libboost_iostreams-vc142-mt-gd-x64-1_76.lib
libboost_json-vc142-mt-gd-x64-1_76.lib
libboost_locale-vc142-mt-gd-x64-1_76.lib
libboost_log-vc142-mt-gd-x64-1_76.lib
libboost_log_setup-vc142-mt-gd-x64-1_76.lib
libboost_math_c99-vc142-mt-gd-x64-1_76.lib
libboost_math_c99f-vc142-mt-gd-x64-1_76.lib
libboost_math_c99l-vc142-mt-gd-x64-1_76.lib
libboost_math_tr1-vc142-mt-gd-x64-1_76.lib
libboost_math_tr1f-vc142-mt-gd-x64-1_76.lib
libboost_math_tr1l-vc142-mt-gd-x64-1_76.lib
libboost_mpi-vc142-mt-gd-x64-1_76.lib
libboost_nowide-vc142-mt-gd-x64-1_76.lib
libboost_numpy38-vc142-mt-gd-x64-1_76.lib
libboost_prg_exec_monitor-vc142-mt-gd-x64-1_76.lib
libboost_program_options-vc142-mt-gd-x64-1_76.lib
libboost_python38-vc142-mt-gd-x64-1_76.lib
libboost_random-vc142-mt-gd-x64-1_76.lib
libboost_regex-vc142-mt-gd-x64-1_76.lib
libboost_serialization-vc142-mt-gd-x64-1_76.lib
libboost_stacktrace_noop-vc142-mt-gd-x64-1_76.lib
libboost_stacktrace_windbg-vc142-mt-gd-x64-1_76.lib
libboost_stacktrace_windbg_cached-vc142-mt-gd-x64-1_76.lib
libboost_system-vc142-mt-gd-x64-1_76.lib
libboost_test_exec_monitor-vc142-mt-gd-x64-1_76.lib
libboost_thread-vc142-mt-gd-x64-1_76.lib
libboost_timer-vc142-mt-gd-x64-1_76.lib
libboost_type_erasure-vc142-mt-gd-x64-1_76.lib
libboost_unit_test_framework-vc142-mt-gd-x64-1_76.lib
libboost_wave-vc142-mt-gd-x64-1_76.lib
libboost_wserialization-vc142-mt-gd-x64-1_76.lib
libboost_zlib-vc142-mt-gd-x64-1_76.lib
flann-gd.lib
flann_cpp-gd.lib
flann_cpp_s-gd.lib
flann_s-gd.lib
OpenNI2.lib
qhullcpp_d.lib
qhullstatic_d.lib
qhullstatic_rd.lib
qhull_rd.lib
vtkChartsCore-9.0d.lib
vtkCommonColor-9.0d.lib
vtkCommonComputationalGeometry-9.0d.lib
vtkCommonCore-9.0d.lib
vtkCommonDataModel-9.0d.lib
vtkCommonExecutionModel-9.0d.lib
vtkCommonMath-9.0d.lib
vtkCommonMisc-9.0d.lib
vtkCommonSystem-9.0d.lib
vtkCommonTransforms-9.0d.lib
vtkDICOMParser-9.0d.lib
vtkDomainsChemistry-9.0d.lib
vtkDomainsChemistryOpenGL2-9.0d.lib
vtkdoubleconversion-9.0d.lib
vtkexodusII-9.0d.lib
vtkexpat-9.0d.lib
vtkFiltersAMR-9.0d.lib
vtkFiltersCore-9.0d.lib
vtkFiltersExtraction-9.0d.lib
vtkFiltersFlowPaths-9.0d.lib
vtkFiltersGeneral-9.0d.lib
vtkFiltersGeneric-9.0d.lib
vtkFiltersGeometry-9.0d.lib
vtkFiltersHybrid-9.0d.lib
vtkFiltersHyperTree-9.0d.lib
vtkFiltersImaging-9.0d.lib
vtkFiltersModeling-9.0d.lib
vtkFiltersParallel-9.0d.lib
vtkFiltersParallelImaging-9.0d.lib
vtkFiltersPoints-9.0d.lib
vtkFiltersProgrammable-9.0d.lib
vtkFiltersSelection-9.0d.lib
vtkFiltersSMP-9.0d.lib
vtkFiltersSources-9.0d.lib
vtkFiltersStatistics-9.0d.lib
vtkFiltersTexture-9.0d.lib
vtkFiltersTopology-9.0d.lib
vtkFiltersVerdict-9.0d.lib
vtkfreetype-9.0d.lib
vtkGeovisCore-9.0d.lib
vtkgl2ps-9.0d.lib
vtkglew-9.0d.lib
vtkhdf5-9.0d.lib
vtkhdf5_hl-9.0d.lib
vtkImagingColor-9.0d.lib
vtkImagingCore-9.0d.lib
vtkImagingFourier-9.0d.lib
vtkImagingGeneral-9.0d.lib
vtkImagingHybrid-9.0d.lib
vtkImagingMath-9.0d.lib
vtkImagingMorphological-9.0d.lib
vtkImagingSources-9.0d.lib
vtkImagingStatistics-9.0d.lib
vtkImagingStencil-9.0d.lib
vtkInfovisCore-9.0d.lib
vtkInfovisLayout-9.0d.lib
vtkInteractionImage-9.0d.lib
vtkInteractionStyle-9.0d.lib
vtkInteractionWidgets-9.0d.lib
vtkIOAMR-9.0d.lib
vtkIOAsynchronous-9.0d.lib
vtkIOCityGML-9.0d.lib
vtkIOCore-9.0d.lib
vtkIOEnSight-9.0d.lib
vtkIOExodus-9.0d.lib
vtkIOExport-9.0d.lib
vtkIOExportGL2PS-9.0d.lib
vtkIOExportPDF-9.0d.lib
vtkIOGeometry-9.0d.lib
vtkIOImage-9.0d.lib
vtkIOImport-9.0d.lib
vtkIOInfovis-9.0d.lib
vtkIOLegacy-9.0d.lib
vtkIOLSDyna-9.0d.lib
vtkIOMINC-9.0d.lib
vtkIOMotionFX-9.0d.lib
vtkIOMovie-9.0d.lib
vtkIONetCDF-9.0d.lib
vtkIOOggTheora-9.0d.lib
vtkIOParallel-9.0d.lib
vtkIOParallelXML-9.0d.lib
vtkIOPLY-9.0d.lib
vtkIOSegY-9.0d.lib
vtkIOSQL-9.0d.lib
vtkIOTecplotTable-9.0d.lib
vtkIOVeraOut-9.0d.lib
vtkIOVideo-9.0d.lib
vtkIOXML-9.0d.lib
vtkIOXMLParser-9.0d.lib
vtkjpeg-9.0d.lib
vtkjsoncpp-9.0d.lib
vtklibharu-9.0d.lib
vtklibproj-9.0d.lib
vtklibxml2-9.0d.lib
vtkloguru-9.0d.lib
vtklz4-9.0d.lib
vtklzma-9.0d.lib
vtkmetaio-9.0d.lib
vtknetcdf-9.0d.lib
vtkogg-9.0d.lib
vtkParallelCore-9.0d.lib
vtkParallelDIY-9.0d.lib
vtkpng-9.0d.lib
vtkpugixml-9.0d.lib
vtkRenderingAnnotation-9.0d.lib
vtkRenderingContext2D-9.0d.lib
vtkRenderingContextOpenGL2-9.0d.lib
vtkRenderingCore-9.0d.lib
vtkRenderingFreeType-9.0d.lib
vtkRenderingGL2PSOpenGL2-9.0d.lib
vtkRenderingImage-9.0d.lib
vtkRenderingLabel-9.0d.lib
vtkRenderingLOD-9.0d.lib
vtkRenderingOpenGL2-9.0d.lib
vtkRenderingSceneGraph-9.0d.lib
vtkRenderingUI-9.0d.lib
vtkRenderingVolume-9.0d.lib
vtkRenderingVolumeOpenGL2-9.0d.lib
vtkRenderingVtkJS-9.0d.lib
vtksqlite-9.0d.lib
vtksys-9.0d.lib
vtkTestingRendering-9.0d.lib
vtktheora-9.0d.lib
vtktiff-9.0d.lib
vtkverdict-9.0d.lib
vtkViewsContext2D-9.0d.lib
vtkViewsCore-9.0d.lib
vtkViewsInfovis-9.0d.lib
vtkWrappingTools-9.0d.lib
vtkzlib-9.0d.lib
获取lib文件名获取技巧:
因为lib文件较多,不可能手动输入或者一一的复制文件,建议先采用bat文件批处理,具体如下,新建一个bat文件,输入内容如下,注意以下方法包含了所以文件名可能的格式要根据自己的文件名修改相应的文件名,下面有以为Boost库的例子。
@echo off
dir . /b >list.txt
dir /b *.lib > filename.txt
dir /b *debug.lib > filename_debug.txt
dir /b *-gd.lib > filename_gd.txt
dir /b *_d.lib > filename_d.txt
dir /b *release.lib > filename_release.txt
exit
然后在相应的lib文件夹下面运行bat文件,即可得到对应的lib文件名,后面会更新给出Python代码自动获取lib文件名。
以Boost库为例的代码如下:
@echo off
#dir . /b >list.txt
dir /b *-mt-x64-1_72.lib > filename.txt
exit
2.4、手动添加PCL库到系统PATH
1、打开电脑属性->高级系统设置->环境变量
2、系统变量->Path->编辑->新建-添加3中框的内容
2.5:PCL库的第一个demo
将PClTestmain.cpp文件的内容修改如下:
#include <iostream>
#include <pcl/pcl_config.h>
using namespace std;
int main(int argc,char *argv)
{
std::cout << "PCL Version: " << PCL_VERSION_PRETTY << std::endl;
std::cout << "Hello PCL!" << std::endl;
system("pause");
return 0;
}
编译运行,输出结果如下,表示PCL库在VS2019中安装配置成功!
至此完成第一节PCL库的简单介绍和安装操作,下一节我们将进入《PCL库中点云基本知识和数据类型结构》的学习。