win10系统下 VS2019点云库PCL1.12.0的安装与配置_windows 10使用pcl-程序员宅基地

技术标签: 经验分享  c++  PCL踩坑记录  教程  

目录

版本信息

安装教程

环境变量设置

VS中PCL的配置

使用 PCL的简单demo


PCL简介:点云库全称是Point Cloud Library(PCL),是一个独立的、大规模的、开放的2D/3D图像和点云处理项目。PCL根据BSD许可条款发布的,是可以免费用于商用和研究使用。

PCL相关网站:

PCL官网项目GitHub

项目开发需要用到PCL,下面记录一下我的PCL安装和配置过程。

参考博文:pcl1.8.0+vs2013环境配置(详细)_BOO2018的博客-程序员宅基地

1. 版本信息

win10系统

PCL:我安装的是PCL 1.12.0,需要下载两个文件:

 

下载地址: Releases · PointCloudLibrary/pcl (github.com)

VS2019社区版(笔者在VS2022上也可以按照此教程进行配置)

2. 安装教程

step1:

直接运行PCL-1.12.0-rc1-AllInOne-msvc2019-win64.exe,常规的安装过程不赘述。

注意:1、添加PCL到系统PATH。2、建议安装到非系统盘。3、安装路径全英文。

step2: 

安装完成后,将pcl-1.12.0-rc1-pdb-msvc2019-win64.zip解压,将.pdb文件拷贝到pcl\bin目录下。

至此PCL的安装就完成了。

3. 环境变量设置

参考:PCL出现“无法找到 pcl_commond.dll 文件,程序无法执行”的问题。_枫林星落的博客-程序员宅基地

 在系统环境变量中添加

我的PCL安装路径是D:\Program Files\PCL 1.12.0

所以我需要添加的环境变量是:

D:\Program Files\PCL 1.12.0\bin

D:\Program Files\PCL 1.12.0\3rdParty\FLANN\bin

D:\Program Files\PCL 1.12.0\3rdParty\Qhull\bin

D:\Program Files\PCL 1.12.0\3rdParty\VTK\bin

D:\Program Files\PCL 1.12.0\3rdParty\Boost\lib

C:\Program Files\OpenNI2\Redist(因为我的OpenNI2装在别的地方了)

4. VS中PCL的配置

step1:

VS中新建一个C++控制台程序,一点基操,如果项目正在开发就用旧的项目。右击解决方案,点击属性,或者从工具栏的视图-属性页进入。

选择此项目的配置:Debug还是Release,活动平台要选x64。这一点决定了后面导入依赖项的种类。

 

 

step2:

添加包含目录:VC++目录 -> 包含目录 -> 点击右列,出现一个下拉列表,点击后出现编辑,点击进入。

 包含目录:

你的PCL安装路径\PCL 1.XX.XX\3rdPart\Boost\include\boost-1_76

D:\Program Files\PCL 1.12.0-rc1\3rdParty\Eigen\eigen3

D:\Program Files\PCL 1.12.0-rc1\3rdParty\FLANN\include

D:\Program Files\PCL 1.12.0-rc1\3rdParty\OpenNI2\Include(这一个需要看OpenNI2装的位置)

D:\Program Files\PCL 1.12.0-rc1\3rdParty\VTK\include\vtk-9.0

D:\Program Files\PCL 1.12.0-rc1\3rdParty\Qhull\include

D:\Program Files\PCL 1.12.0-rc1\include\pcl-1.12

 step3:

添加库目录:步骤同step2

库目录:

 D:\Program Files\PCL 1.12.0-rc1\3rdParty\Boost\lib

D:\Program Files\PCL 1.12.0-rc1\3rdParty\FLANN\lib

D:\Program Files\PCL 1.12.0-rc1\3rdParty\OpenNI2\Lib(这一个需要看OpenNI2装的位置)

D:\Program Files\PCL 1.12.0-rc1\3rdParty\Qhull\lib

D:\Program Files\PCL 1.12.0-rc1\3rdParty\VTK\lib

D:\Program Files\PCL 1.12.0-rc1\lib

 step4:

添加依赖项:这一步比较繁琐,需要耐心和一定的时间。

 附加的依赖项是step3各个库目录中的.lib文件,debug模式为XXXgdXXX.lib,release模式就是除了XXXgdXXX.lib的那一堆.lib文件,因为文件数很多,建议用bat文件批量获得各个库目录下的.lib文件名。

参考其他博主的方法:VS中PCL库附加依赖项配置 - life_limbo - 博客园 (cnblogs.com)

 @echo off
for %%I in (*.lib) do echo %%I>>all.txt
for %%I in (*d.lib) do echo %%I>>adebug.txt
for %%I in (*9.0.lib) do echo %%I>>arelease.txt
pause

根据不同库目录下的.lib文件名,修改下图中画红框的部分,就能快速得到需要的.lib文件。

 将各个库目录下的对应debug或者release版本的.lib文件名添加到依赖项列表中,即可完成配置。

可以将下列的lib文件名先复制到文本文件中,再粘贴至VS中。

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
 

PCL1.12.0 release版本.lib文件名列表(直接复制到库目录下即可)

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-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-vc142-mt-x64-1_76.lib
libboost_stacktrace_windbg_cached-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

OpenNI2.lib

qhullcpp.lib
qhullstatic.lib
qhullstatic_r.lib
qhull_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

5. 使用 PCL的简单demo

常用点云模型下载网址:

乔治亚理工学院:Large Geometric Models Archive (gatech.edu)

 随便下载一个点云文件,我这里下载的是bun_zipper.ply,小兔子ply格式的点云文件,所以程序里面将其转换为pcd格式的文件。

#include <pcl/visualization/cloud_viewer.h>
#include <iostream>
#include <pcl/io/io.h>
#include <pcl/io/pcd_io.h>
#include <pcl/io/ply_io.h>
#include <pcl/point_types.h>

using namespace pcl;
using namespace pcl::io;

int user_data;

void
viewerOneOff(pcl::visualization::PCLVisualizer& viewer)
{
    viewer.setBackgroundColor(1.0, 0.5, 1.0);
    pcl::PointXYZ o;
    o.x = 1.0;
    o.y = 0;
    o.z = 0;
    //viewer.addSphere(o, 0.25, "sphere", 0);
    std::cout << "i only run once" << std::endl;

}

void
viewerPsycho(pcl::visualization::PCLVisualizer& viewer)
{
    static unsigned count = 0;
    std::stringstream ss;
    ss << "Once per viewer loop: " << count++;
    //viewer.removeShape("text", 0);
    //viewer.addText(ss.str(), 200, 300, "text", 0);

    //FIXME: possible race condition here:
    user_data++;
}

int
main()
{

    pcl::PLYReader reader;
    pcl::PointCloud<pcl::PointXYZ>::Ptr cloud1(new pcl::PointCloud<pcl::PointXYZ>);
    reader.read<pcl::PointXYZ>("data2\\bun_zipper.ply", *cloud1);
    pcl::io::savePCDFile("data2\\pointcloud.pcd", *cloud1);

    pcl::PointCloud<pcl::PointXYZRGBA>::Ptr cloud(new pcl::PointCloud<pcl::PointXYZRGBA>);
    pcl::io::loadPCDFile("data2\\pointcloud.pcd", *cloud);

    pcl::visualization::CloudViewer viewer("Cloud Viewer");

    //blocks until the cloud is actually rendered
    viewer.showCloud(cloud);

    //use the following functions to get access to the underlying more advanced/powerful
    //PCLVisualizer

    //This will only get called once
    viewer.runOnVisualizationThreadOnce(viewerOneOff);

    //This will get called once per visualization iteration
    viewer.runOnVisualizationThread(viewerPsycho);
    while (!viewer.wasStopped())
    {
        //you can also do cool processing here
        //FIXME: Note that this is running in a separate thread from viewerPsycho
        //and you should guard against race conditions yourself...
        user_data++;
    }
    return 0;
}

 至此,你可以开展PCL的实践了,祝玩得愉快。

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/Nelson_Leo/article/details/118600787

智能推荐

python服务器端开发面试_【网易游戏Python面试】python 服务端开发-看准网-程序员宅基地

文章浏览阅读145次。10.21终面已参加,希望能顺利通过终面拿到offer~一共三轮,电话面试+笔试+视频面试,视频面试3V110月19日投的新媒体运营的简历,HR说因为是周末,等工作日再联系我,在周一下午三点我接到了电话成功通过简历筛选和电话面试,整个电话面试的过程长,大概10分钟左右,因为前期稍微做了一些准备,所以还算对答如流,整个过程顺利,HR现场告诉我通过面试,并随即给我发了笔试题,让我准备一下,最晚三天之..._网易 python游戏服务器

MVC层次划分简述_mvc分层-程序员宅基地

文章浏览阅读6.5k次,点赞12次,收藏38次。MVC层次划分简述写在前面的一段话:首先要知道MVC和三层架构之间有什么关系:MVC:【 Model(数据模型) - View(视图) - Controller(控制器) 】三层架构:【 Presentation tier(展现层) - Application tier(应用层)+Date tier(数据访问层) 】很多人都有一个误解,认为Spring MVC的M、V、C对..._mvc分层

Flink的sink实战之三:cassandra3_flink cassandra-程序员宅基地

文章浏览阅读2.9k次。实践flink数据集sink到cassandra3_flink cassandra

使用docker安装codimd,搭建你自己的在线协作markdown编辑器_群晖 docker 搭建 codimd-程序员宅基地

文章浏览阅读7.1k次,点赞4次,收藏12次。文章目录一、前言二、codimd是什么?2.1 源于hackmd的超好用markdown编辑器2.2 codimd的作用三、安装和使用3.1 安装前需要知道的3.2 安装步骤3.2.1 创建数据库3.2.2 安装git3.2.3 安装docker3.2.4 安装docker compose3.2.5 安装codimd3.2.6 检查是否安装成功3.2.7 放行端口3.2.8 测试使用3.3 开始写..._群晖 docker 搭建 codimd

Json和ajax-程序员宅基地

文章浏览阅读335次。Json json 可以定义多种类型 var jsonObj = { "key1":123, "key2":"name", "key3":[12,"age",true], //数组 "key4":false, "key5":{ //存一个json对象 "key6":456, "key7":"number" }} json其实就是一个Object对象, 他的key值 可以看成对象的一个属性, 获取他的value值...

ssm超市账单管理系统a2e96【独家源码】 应对计算机毕业设计困难的解决方案-程序员宅基地

文章浏览阅读87次。选题背景:超市账单管理系统是一种针对超市行业的管理工具,旨在提供高效、准确、便捷的账单管理服务。随着城市化进程的加快和人们生活水平的提高,超市作为日常生活必需品的主要供应渠道之一,扮演着重要的角色。然而,传统的超市账单管理方式存在一些问题,如手工记录容易出错、数据整理繁琐、信息不透明等。因此,开发一个科技化的超市账单管理系统成为了必要之举。选题意义:首先,超市账单管理系统的开发可以提高账单管理的效率。传统的超市账单管理方式通常需要员工手动记录商品销售信息,并进行数据整理和汇总。这种方式容易出现人为错

随便推点

bookmarks_2021_9_28_拾度智能科技 att7022eu-程序员宅基地

文章浏览阅读1.7k次。书签栏通讯 s7-1200与s7-200smart通讯-工业支持中心-西门子中国IO_deviceS7-1200PROFINET通信ET 200SP 安装视频 - ID: 95886218 - Industry Support Siemens云平台接入在线文档 - 低代码开发嵌入式设备 | 物一世 WareExpress在linux下使用c语言实现MQTT通信(一.MQTT原理介绍及流程图)_qq_44041062的博客-程序员宅基地C mqtt_百度搜索开发快M_拾度智能科技 att7022eu

国家取消职称英语与计算机,全国职称英语考试取消-程序员宅基地

文章浏览阅读1.6k次。职称英语全称为全国专业技术人员职称英语等级考试,是由国家人事部组织实施的一项国家级外语考试。1.概述全国专业技术人员职称英语等级考试是由人力资源和社会保障部组织实施的一项外语考试,它根据英语在不同专业领域活动中的应用特点,结合专业技术人员掌握和应用英语的实际情况,对申报不同级别职称的专业技术人员的英语水平提出了不同的要求。该考试根据专业技术人员使用英语的实际情况,把考试的重点放在了阅读理解上面。全..._全国专业技术人员职称英语等级考试 北京 取消

where里能用max吗_网络里能找到真爱吗?-程序员宅基地

文章浏览阅读42次。恋爱指导篇 知心的小爱“真爱”是一个永不过时的话题,古代的人找对象,靠的是媒妁之言,父母定婚姻。现代的人靠的是相亲,自由恋爱,按理找一个喜欢的人结婚会很幸福,近几年反而离率更高了。古代人认识的人少,交流工具少,最多信鸽传书,信物传情。现代要认识一个人很容易了,最初是电话信息联系。前几年是qq,微信摇一摇,近两年是抖音,快手随便找一找。虽然找对象,寻伴侣更方便了,为何大部分人还是感觉更迷茫,不快乐...

刷题记录第八十天-修剪二叉搜索树-程序员宅基地

文章浏览阅读109次。【代码】刷题记录第八十天-修剪二叉搜索树。

dcm4che,WADO相关-程序员宅基地

文章浏览阅读248次。关于 dcm4che WADO WADO:Web Access to DICOM Objects dcm4che 是一个为医疗保健企业的开源应用程序和工具集合。这些应用程序已经开发了Java编程语言的性能和便携性,在JDK 1.6及更高版本支持部署。在dcm4che项目的核心是一个强大的执行DICOM标准的。该dcm4che-1.x和dcm4che-2.X DICOM Tool..._dcm4che实现wado服务

linux查看zk日志,14.1 zookeeper日志查看-程序员宅基地

文章浏览阅读2.2k次。zookeeper服务器会产生三类日志:事务日志、快照日志和log4j日志。在zookeeper默认配置文件zoo.cfg(可以修改文件名)中有一个配置项dataDir,该配置项用于配置zookeeper快照日志和事务日志的存储地址。在官方提供的默认参考配置文件zoo_sample.cfg中,只有dataDir配置项。其实在实际应用中,还可以为事务日志专门配置存储地址,配置项名称为dataLogD..._linux查看zookeeper日志

推荐文章

热门文章

相关标签