目录
1 相关软件下载链接
软件与版本主要是:visual studio community 2022和pcl1.14.1-msvc2022;
下载 PCL-1.14.1-AllInOne-msvc2022-win64.exe 和 pcl-1.14.1-pdb-msvc2022-win64.zip 文件
官网链接: All in one 安装包下载地址:http :// pointclouds.org/downloads/windows.html
all in one 包对应的PDB包下载地址:https ://github.com/PointCloudLibrary/pcl/releases
2 PCL安装流程
1、选择下载好的PCL-1.14.1-AllInOne-msvc2022-win64安装包,右键 以管理员身份运行;
2、选择第二个Add PCL to the system PATH for all users ,并点击下方下一步
3、选择安装位置,我选择的是D:\Program Files\PCL1.14.1,并点击下一步
4、默认系统选择 ,并点击下方下一步
5、选择安装的组件,默认全选,并点击安装;
6、安装组件后,等待片刻,会弹出安装OPENNI2的提示。将安装路径改到D:\Program Files\PCL 1.14.1\3rdParty\ ,然后点击Install;
7、点击finish,完成安装。
3 环境配置
1、安装成功后,进入高级系统设置,查看环境变量中的系统变量出现以下四个:
2、双击 Path ,编辑环境变量,新建以下环境变量;
3、点击确定,保存。
4、将下载的 pcl-1.14.1-pdb-msvc2022-win64 解压,并将其中的全部 .pdb文件复制到PCL安装路径的bin文件夹下,我的是 D:\Program Files\PCL 1.14.1\bin
5、打开vs2022,新建项目,选择新建Windows桌面向导,选择路径,选择空项目和控制台应用程序,命名为PCL_Study.cpp 。
6、选择Release与X64
7、然后找到 视图 - 其他窗口 - 属性管理器 ,打开属性管理器;
8、在 release|x64文件夹上 右键 添加新项目属性表,命名为 PCL1.14.1_Release64 ; Debug|x64下相同。
9、双击PCLRelease64,弹出属性页;
10、左侧选中VC++目录理器,右侧在 包含目录 和 库目录 中添加如下路径。
包含目录:
库目录:
11、找到左侧 链接器 - 输入 - 附加依赖库 ;直接复制粘贴过来即可。
pcl_common.lib
pcl_features.lib
pcl_filters.lib
pcl_io.lib
pcl_io_ply.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-vc143-mt-x64-1_84.lib
libboost_bzip2-vc143-mt-x64-1_84.lib
libboost_chrono-vc143-mt-x64-1_84.lib
libboost_container-vc143-mt-x64-1_84.lib
libboost_context-vc143-mt-x64-1_84.lib
libboost_contract-vc143-mt-x64-1_84.lib
libboost_coroutine-vc143-mt-x64-1_84.lib
libboost_date_time-vc143-mt-x64-1_84.lib
libboost_exception-vc143-mt-x64-1_84.lib
libboost_fiber-vc143-mt-x64-1_84.lib
libboost_filesystem-vc143-mt-x64-1_84.lib
libboost_graph-vc143-mt-x64-1_84.lib
libboost_graph_parallel-vc143-mt-x64-1_84.lib
libboost_iostreams-vc143-mt-x64-1_84.lib
libboost_json-vc143-mt-x64-1_84.lib
libboost_locale-vc143-mt-x64-1_84.lib
libboost_log-vc143-mt-x64-1_84.lib
libboost_log_setup-vc143-mt-x64-1_84.lib
libboost_math_c99-vc143-mt-x64-1_84.lib
libboost_math_c99f-vc143-mt-x64-1_84.lib
libboost_math_c99l-vc143-mt-x64-1_84.lib
libboost_math_tr1-vc143-mt-x64-1_84.lib
libboost_math_tr1f-vc143-mt-x64-1_84.lib
libboost_math_tr1l-vc143-mt-x64-1_84.lib
libboost_mpi-vc143-mt-x64-1_84.lib
libboost_nowide-vc143-mt-x64-1_84.lib
libboost_numpy310-vc143-mt-x64-1_84.lib
libboost_prg_exec_monitor-vc143-mt-x64-1_84.lib
libboost_program_options-vc143-mt-x64-1_84.lib
libboost_python310-vc143-mt-x64-1_84.lib
libboost_random-vc143-mt-x64-1_84.lib
libboost_regex-vc143-mt-x64-1_84.lib
libboost_serialization-vc143-mt-x64-1_84.lib
libboost_stacktrace_noop-vc143-mt-x64-1_84.lib
libboost_stacktrace_windbg-vc143-mt-x64-1_84.lib
libboost_stacktrace_windbg_cached-vc143-mt-x64-1_84.lib
libboost_system-vc143-mt-x64-1_84.lib
libboost_test_exec_monitor-vc143-mt-x64-1_84.lib
libboost_thread-vc143-mt-x64-1_84.lib
libboost_timer-vc143-mt-x64-1_84.lib
libboost_type_erasure-vc143-mt-x64-1_84.lib
libboost_unit_test_framework-vc143-mt-x64-1_84.lib
libboost_url-vc143-mt-x64-1_84.lib
libboost_wave-vc143-mt-x64-1_84.lib
libboost_wserialization-vc143-mt-x64-1_84.lib
libboost_zlib-vc143-mt-x64-1_84.lib
flann.lib
flann_cpp.lib
flann_cpp_s.lib
flann_s.lib
OpenNI2.lib
qhullcpp.lib
qhullstatic.lib
qhullstatic_r.lib
qhull_r.lib
vtkcgns-9.3.lib
vtkChartsCore-9.3.lib
vtkCommonColor-9.3.lib
vtkCommonComputationalGeometry-9.3.lib
vtkCommonCore-9.3.lib
vtkCommonDataModel-9.3.lib
vtkCommonExecutionModel-9.3.lib
vtkCommonMath-9.3.lib
vtkCommonMisc-9.3.lib
vtkCommonSystem-9.3.lib
vtkCommonTransforms-9.3.lib
vtkDICOMParser-9.3.lib
vtkDomainsChemistry-9.3.lib
vtkDomainsChemistryOpenGL2-9.3.lib
vtkdoubleconversion-9.3.lib
vtkexodusII-9.3.lib
vtkexpat-9.3.lib
vtkFiltersAMR-9.3.lib
vtkFiltersCellGrid-9.3.lib
vtkFiltersCore-9.3.lib
vtkFiltersExtraction-9.3.lib
vtkFiltersFlowPaths-9.3.lib
vtkFiltersGeneral-9.3.lib
vtkFiltersGeneric-9.3.lib
vtkFiltersGeometry-9.3.lib
vtkFiltersGeometryPreview-9.3.lib
vtkFiltersHybrid-9.3.lib
vtkFiltersHyperTree-9.3.lib
vtkFiltersImaging-9.3.lib
vtkFiltersModeling-9.3.lib
vtkFiltersParallel-9.3.lib
vtkFiltersParallelImaging-9.3.lib
vtkFiltersPoints-9.3.lib
vtkFiltersProgrammable-9.3.lib
vtkFiltersReduction-9.3.lib
vtkFiltersSelection-9.3.lib
vtkFiltersSMP-9.3.lib
vtkFiltersSources-9.3.lib
vtkFiltersStatistics-9.3.lib
vtkFiltersTensor-9.3.lib
vtkFiltersTexture-9.3.lib
vtkFiltersTopology-9.3.lib
vtkFiltersVerdict-9.3.lib
vtkfmt-9.3.lib
vtkfreetype-9.3.lib
vtkGeovisCore-9.3.lib
vtkgl2ps-9.3.lib
vtkglew-9.3.lib
vtkGUISupportQt-9.3.lib
vtkGUISupportQtQuick-9.3.lib
vtkGUISupportQtSQL-9.3.lib
vtkhdf5-9.3.lib
vtkhdf5_hl-9.3.lib
vtkImagingColor-9.3.lib
vtkImagingCore-9.3.lib
vtkImagingFourier-9.3.lib
vtkImagingGeneral-9.3.lib
vtkImagingHybrid-9.3.lib
vtkImagingMath-9.3.lib
vtkImagingMorphological-9.3.lib
vtkImagingSources-9.3.lib
vtkImagingStatistics-9.3.lib
vtkImagingStencil-9.3.lib
vtkInfovisCore-9.3.lib
vtkInfovisLayout-9.3.lib
vtkInteractionImage-9.3.lib
vtkInteractionStyle-9.3.lib
vtkInteractionWidgets-9.3.lib
vtkIOAMR-9.3.lib
vtkIOAsynchronous-9.3.lib
vtkIOCellGrid-9.3.lib
vtkIOCesium3DTiles-9.3.lib
vtkIOCGNSReader-9.3.lib
vtkIOChemistry-9.3.lib
vtkIOCityGML-9.3.lib
vtkIOCONVERGECFD-9.3.lib
vtkIOCore-9.3.lib
vtkIOEnSight-9.3.lib
vtkIOExodus-9.3.lib
vtkIOExport-9.3.lib
vtkIOExportGL2PS-9.3.lib
vtkIOExportPDF-9.3.lib
vtkIOFLUENTCFF-9.3.lib
vtkIOGeometry-9.3.lib
vtkIOHDF-9.3.lib
vtkIOImage-9.3.lib
vtkIOImport-9.3.lib
vtkIOInfovis-9.3.lib
vtkIOIOSS-9.3.lib
vtkIOLegacy-9.3.lib
vtkIOLSDyna-9.3.lib
vtkIOMINC-9.3.lib
vtkIOMotionFX-9.3.lib
vtkIOMovie-9.3.lib
vtkIONetCDF-9.3.lib
vtkIOOggTheora-9.3.lib
vtkIOParallel-9.3.lib
vtkIOParallelXML-9.3.lib
vtkIOPLY-9.3.lib
vtkIOSegY-9.3.lib
vtkIOSQL-9.3.lib
vtkioss-9.3.lib
vtkIOTecplotTable-9.3.lib
vtkIOVeraOut-9.3.lib
vtkIOVideo-9.3.lib
vtkIOXML-9.3.lib
vtkIOXMLParser-9.3.lib
vtkjpeg-9.3.lib
vtkjsoncpp-9.3.lib
vtkkissfft-9.3.lib
vtklibharu-9.3.lib
vtklibproj-9.3.lib
vtklibxml2-9.3.lib
vtkloguru-9.3.lib
vtklz4-9.3.lib
vtklzma-9.3.lib
vtkmetaio-9.3.lib
vtknetcdf-9.3.lib
vtkogg-9.3.lib
vtkParallelCore-9.3.lib
vtkParallelDIY-9.3.lib
vtkpng-9.3.lib
vtkpugixml-9.3.lib
vtkRenderingAnnotation-9.3.lib
vtkRenderingCellGrid-9.3.lib
vtkRenderingContext2D-9.3.lib
vtkRenderingContextOpenGL2-9.3.lib
vtkRenderingCore-9.3.lib
vtkRenderingFreeType-9.3.lib
vtkRenderingGL2PSOpenGL2-9.3.lib
vtkRenderingHyperTreeGrid-9.3.lib
vtkRenderingImage-9.3.lib
vtkRenderingLabel-9.3.lib
vtkRenderingLICOpenGL2-9.3.lib
vtkRenderingLOD-9.3.lib
vtkRenderingOpenGL2-9.3.lib
vtkRenderingQt-9.3.lib
vtkRenderingSceneGraph-9.3.lib
vtkRenderingUI-9.3.lib
vtkRenderingVolume-9.3.lib
vtkRenderingVolumeOpenGL2-9.3.lib
vtkRenderingVtkJS-9.3.lib
vtksqlite-9.3.lib
vtksys-9.3.lib
vtkTestingRendering-9.3.lib
vtktheora-9.3.lib
vtktiff-9.3.lib
vtkverdict-9.3.lib
vtkViewsContext2D-9.3.lib
vtkViewsCore-9.3.lib
vtkViewsInfovis-9.3.lib
vtkViewsQt-9.3.lib
vtkWrappingTools-9.3.lib
vtkzlib-9.3.lib
12、c/c++ ,常规, 找到SDL检查 ,将其改为 “否” ;点击确定,应用。
14、视图 - 其他窗口 - 属性管理器 ,打开属性管理器;右击Relsease|64,点击下方属性,点进去找到c/c++ ,常规, 找到SDL检查 ,将其改为 “否” ;点击确定,应用。 (注:和上面的不一样,上面的是在属性表PCL.14.1_Release64中改的。)
15、退出VS2022,点击VS2022图标,右键到属性,点击快捷方式,点击下方的高级选项,将管理员身份运行勾选上。
16、打开VS2022,打开刚才创建的文件,添加以下代码。窗口中显示兔子模型,PCL配置成功。
#include <iostream>
#include <pcl/io/pcd_io.h>
#include <pcl/point_types.h>
#include <pcl/point_cloud.h>
#include <pcl/octree/octree.h>
#include <pcl/kdtree/kdtree_flann.h>
#include <pcl/visualization/pcl_visualizer.h>
#include <boost/thread/thread.hpp>
#include<Eigen/dense>
using namespace std;
int main()
{
pcl::PointCloud<pcl::PointXYZ>::Ptr cloud_in(new pcl::PointCloud<pcl::PointXYZ>);
pcl::io::loadPCDFile("bunny.pcd", *cloud_in);
boost::shared_ptr<pcl::visualization::PCLVisualizer> view(new pcl::visualization::PCLVisualizer("3D Viewer"));
// 显示点云本身的RGB颜色
pcl::visualization::PointCloudColorHandlerRGBField<pcl::PointXYZ> rgb(cloud_in);
view->addPointCloud<pcl::PointXYZ>(cloud_in, "cloud_color");
// 设置点云的点大小
view->setPointCloudRenderingProperties(pcl::visualization::PCL_VISUALIZER_POINT_SIZE, 2, "cloud_color");
while (!view->wasStopped())
{
view->spinOnce(100);
boost::this_thread::sleep(boost::posix_time::microseconds(100000));
}
return 0;
}