【PCL】基于C++与QT的PCL环境配置(保姆级教程)

基于C++与QT的PCl环境配置

此教程供个人学习与经验分享,如有不足或错误之处也麻烦指正。如遇到问题讨论或指正错误,请邮件:cheng425863@icloud.com,长期有效。

软件版本

理论上教程兼容所有版本,配置个人版本需要注意Cmake,Vs,VTK等需要版本兼容。另外注意:VTK9.0版本后不需要编译QT控件。

在这里提供教程里涉及的所有安装包:百度云地址,密码:0412。
本教程资源如下:

  1. VS2015(安装C++);
  2. PCL-1.8.1-ALLInOne-msvc2015-win64;
  3. Cmake-3.15.0-rc3-win64;
  4. QT-5.12.12;
  5. VTK-V8.0.0;
  6. 斯坦福兔子.pcd;

QT安装

1.打开所提供的QT安装包,如下界面:
在这里插入图片描述QT的安装需要登录自己的QT账号,如果没有的话可以去官网或者界面Sign up去注册,填入账号密码即可下一步。(据说离线状态下会跳过这一步,没有试过。)

注:同意协议,欢迎安装等界面自行操作!

2.QT安装路径,路径不能含有中文及空格符,默认推荐安装C盘根目录。(这个一定要注意,中文及空格会导致后续操作异常,推荐C根目录是因为Cmake默认扫描路径是C盘,后续管理也方便)。
在这里插入图片描述
3.QT组件安装选择。这里面根据自己的工作需求进行选择,纯小白建议全部安装或按照我下面的选择进行安装。
在这里插入图片描述
4.后面就是同意协议,确认安装什么的,一直点击“Next”就好,不做赘述,至此,QT安装完成。

5.环境检验:QT不同的版本略微有差别,有的版本会在安装过程中询问你是否添加路径到环境变量,有的则不会询问自动添加。本教程本部不会询问,QT安装完后需自己在:此电脑——属性——关于——高级系统设置——环境变量中查看是否存添加了QT环境路径,否则自行添加,如下:
在这里插入图片描述

PCL安装

Github上提供了Allnoneinstaller。
链接
我电脑上VS版本是2015,用的是:PCL-1.8.1-AllInOne-msvc2015-win64.exe
安装过程简单,一直下一步即可。
有两个地方需要再次提醒:
1.在以下界面,请添加PCL到系统路径。
在这里插入图片描述
2.安装路径确保无空格符号,下图是个错误示例(含有空格),建议安装到C盘根目录。
在这里插入图片描述
3.PCL安装快结束时,会要求你安装OpenGL2,为了便于管理,最好把OpenNI2安装到PCL安装目录的 3rdParty 文件夹下。
在这里插入图片描述
等待安装完成即可,至此,PCL安装完成。

Cmake安装

Cmake安装比较简单,一直下一步即可,同时也要注意,安装路径不能含有中文及空格,推荐安装在C盘根目录下。
在下面这个界面中,推荐选项如下。
在这里插入图片描述

VTK编译

这个部分是最难最复杂的,基本上都是卡在了这里,请务必仔细。
PCL自带VTK是不完整的,这里我们需要下载VTK源码进行重新编译使其支持QT并覆盖PCL原生VTK。
一.编译前有几项前提工作;
1.解压所提供的VTK,把VTK解压至PCL安装文件路径下3rdParty文件夹,获得解压文件vtk-v8.0.0,打开解压的文件夹vtk-v8.0.0并创建build空文件夹。
在这里插入图片描述
2.电脑系统环境配置:
于20230710对此教程做出了优化,此处不要在意截图路径于本教程内不对应问题。重点是需要将哪些路径配置到环境变量。
在这里插入图片描述

3.删除PCL自带VTK路径下所有文件
在这里插入图片描述
二.编译
1.打开界面,如下图。
Where is the source code:填入解压后vtk-v8.0.0路径,
例:C:/PCL1.8.1/3rdParty/vtk-v8.0.0
Where to build the binaries:填入vtk-v8.0.0\build路径,
例:C:/PCL1.8.1/3rdParty/vtk-v8.0.0/build

在这里插入图片描述
2.点击Configure,会弹出以下界面,选择对应的VS版本与平台版本即可,例:VS2015,X64,点击完成。
在这里插入图片描述
3.Configure完成后如下界面,勾选Grouped,Advanced便于我们查看,这里可以提前执行下第9步,并检查下QT相关路径确保无误。

在这里插入图片描述
4.第一次Configure后,要在VTK下勾选”VTK_ALL_NEW_OBJECT_FACTORY”与”VTK_DEBUG_LEAKS”.
在这里插入图片描述
5.BUILD下取消勾选”BUILD_TESTING”

在这里插入图片描述
6.CMAKE下CMAKE_INSTALL_PREFIX更改为PCL自带的VTK路径
在这里插入图片描述
7.VTK下勾选VTK_Group_QT,”VTK_RENDERING_BACKEND”设置为OpenGl。
在这里插入图片描述
8.点击Add Entry,添加CMAKE_DEBUG_POSTFIX,Value设置为“-gd”(用来区分Debug与Release版本)。
在这里插入图片描述
9.特别注意,QT版本与所安装版本保持一致,在这里我们的版本是5,否则报错。
在这里插入图片描述
10.依次点击,Configure,无异常后点击Generate。
在这里插入图片描述
11.Generate完成后,打开我们创建的build文件夹,打开VTK.sln文件。这里我们需要在Debug模式下对ALL_BUILD和INSTALL右键点击生成,在Release模式下再对ALL_BUILD和INSTALL右键点击生成,一共需要生成四次,如途中报错,请重装相关软件重新执行上述流程。
在这里插入图片描述
12.添加DLL与Lib至QT:
找到下面两个文件:
C:\PCL1.8.1\3rdParty\VTK\plugins\designer\QVTKWidgetPlugin.dll
C:\PCL1.8.1\3rdParty\vtk-v8.0.0\build\lib\Release\QVTKWidgetPlugin.lib
(注意辨别,这是我的PCL安装路径)

粘贴至:
C:\Qt\Qt5.12.12\5.12.12\msvc2015_64\plugins\designer与
C:\Qt\Qt5.12.12\Tools\QtCreator\bin\plugins\designer路径下
(注意辨别,这是我的QT安装路径)

13.验证。
打开QT Creator,控件栏下存在以下控件,则代表编译OK。
在这里插入图片描述

Demo环境配置

基于以上,已完成软件安装,VTK编译等操作,接下来跑个Demo来显示经典的斯坦福兔子。

C++Demo:
1.在VS中创建C++空项目。
2.打开项目属性,进入属性页。
3.添加环境路径,调试—环境—编辑,粘贴以下环境路径:
PATH=KaTeX parse error: Undefined control sequence: \bin at position 11: (PCL_ROOT)\̲b̲i̲n̲;(PCL_ROOT)\3rdParty\FLANN\bin;$(PCL_ROOT)\3rdParty\VTK\bin;
KaTeX parse error: Undefined control sequence: \Qhull at position 11: (PCL_ROOT)\̲Q̲h̲u̲l̲l̲\bin;(PCL_ROOT)\3rdParty\OpenNI2\Tools;$(PATH)

4.C/C++—常规—SDL检查,更改为”否”。
5.C/C++—代码生成—运行库设定为:”多线程调试DLL(/MDd)”。
6.VC++目录—包含目录设定如下:
在这里插入图片描述
7.VC++目录—库目录设定如下:
在这里插入图片描述
8.C/C++—预处理器——预处理定义如下:
_CRT_SECURE_NO_WARNINGS
BOOST_ALL_NO_LIB
BOOST_USE_WINDOWS_H
NOMINMAX
_SCL_SECURE_NO_WARNINGS
_SILENCE_FPOS_SEEKPOS_DEPRECATION_WARNING

9.链接器—常规—附加库目录:
在这里插入图片描述
10.链接器—输入—附加依赖项:

敲黑板了:
这一块配置又臭又长,这里提供一个快捷方法。
Win+R输入cmd调用window控制台
我的PCL装在D盘,则输入【D:】回车,切换到D盘,将lib文件夹路径复制,【cd 文件路径】回车,进入对应文件夹控制
以我的路径示例:
1.输入 D: 按下回车进入D盘
2.输入cd D:\VTK-VC2019\install\lib 按下回车进入lib目录
3.输入 DIR .lib/B>LIST.TXT 然后回车,lib文件夹内就会出现一个LIST.TXT的文件。

这里分Debug与Release两种情况。

Debug:
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_ml_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_stereo_debug.lib
pcl_surface_debug.lib
pcl_tracking_debug.lib
pcl_visualization_debug.lib
flann_cpp_s-gd.lib
flann_s-gd.lib
flann-gd.lib
libboost_atomic-vc140-mt-gd-1_64.lib
libboost_chrono-vc140-mt-gd-1_64.lib
libboost_container-vc140-mt-gd-1_64.lib
libboost_context-vc140-mt-gd-1_64.lib
libboost_coroutine-vc140-mt-gd-1_64.lib
libboost_date_time-vc140-mt-gd-1_64.lib
libboost_exception-vc140-mt-gd-1_64.lib
libboost_filesystem-vc140-mt-gd-1_64.lib
libboost_graph-vc140-mt-gd-1_64.lib
libboost_iostreams-vc140-mt-gd-1_64.lib
libboost_locale-vc140-mt-gd-1_64.lib
libboost_log-vc140-mt-gd-1_64.lib
libboost_log_setup-vc140-mt-gd-1_64.lib
libboost_math_c99-vc140-mt-gd-1_64.lib
libboost_math_c99f-vc140-mt-gd-1_64.lib
libboost_math_c99l-vc140-mt-gd-1_64.lib
libboost_math_tr1-vc140-mt-gd-1_64.lib
libboost_math_tr1f-vc140-mt-gd-1_64.lib
libboost_math_tr1l-vc140-mt-gd-1_64.lib
libboost_mpi-vc140-mt-gd-1_64.lib
libboost_prg_exec_monitor-vc140-mt-gd-1_64.lib
libboost_program_options-vc140-mt-gd-1_64.lib
libboost_random-vc140-mt-gd-1_64.lib
libboost_regex-vc140-mt-gd-1_64.lib
libboost_serialization-vc140-mt-gd-1_64.lib
libboost_signals-vc140-mt-gd-1_64.lib
libboost_system-vc140-mt-gd-1_64.lib
libboost_test_exec_monitor-vc140-mt-gd-1_64.lib
libboost_thread-vc140-mt-gd-1_64.lib
libboost_timer-vc140-mt-gd-1_64.lib
libboost_unit_test_framework-vc140-mt-gd-1_64.lib
libboost_wave-vc140-mt-gd-1_64.lib
libboost_wserialization-vc140-mt-gd-1_64.lib
qhull_d.lib
qhull_p_d.lib
qhull_r_d.lib
qhullcpp_d.lib
qhullstatic_d.lib
qhullstatic_r_d.lib
vtkalglib-8.0-gd.lib
vtkChartsCore-8.0-gd.lib
vtkCommonColor-8.0-gd.lib
vtkCommonComputationalGeometry-8.0-gd.lib
vtkCommonCore-8.0-gd.lib
vtkCommonDataModel-8.0-gd.lib
vtkCommonExecutionModel-8.0-gd.lib
vtkCommonMath-8.0-gd.lib
vtkCommonMisc-8.0-gd.lib
vtkCommonSystem-8.0-gd.lib
vtkCommonTransforms-8.0-gd.lib
vtkDICOMParser-8.0-gd.lib
vtkDomainsChemistry-8.0-gd.lib
vtkexoIIc-8.0-gd.lib
vtkexpat-8.0-gd.lib
vtkFiltersAMR-8.0-gd.lib
vtkFiltersCore-8.0-gd.lib
vtkFiltersExtraction-8.0-gd.lib
vtkFiltersFlowPaths-8.0-gd.lib
vtkFiltersGeneral-8.0-gd.lib
vtkFiltersGeneric-8.0-gd.lib
vtkFiltersGeometry-8.0-gd.lib
vtkFiltersHybrid-8.0-gd.lib
vtkFiltersHyperTree-8.0-gd.lib
vtkFiltersImaging-8.0-gd.lib
vtkFiltersModeling-8.0-gd.lib
vtkFiltersParallel-8.0-gd.lib
vtkFiltersParallelImaging-8.0-gd.lib
vtkFiltersProgrammable-8.0-gd.lib
vtkFiltersSelection-8.0-gd.lib
vtkFiltersSMP-8.0-gd.lib
vtkFiltersSources-8.0-gd.lib
vtkFiltersStatistics-8.0-gd.lib
vtkFiltersTexture-8.0-gd.lib
vtkFiltersVerdict-8.0-gd.lib
vtkfreetype-8.0-gd.lib
vtkGeovisCore-8.0-gd.lib
vtkhdf5-8.0-gd.lib
vtkhdf5_hl-8.0-gd.lib
vtkImagingColor-8.0-gd.lib
vtkImagingCore-8.0-gd.lib
vtkImagingFourier-8.0-gd.lib
vtkImagingGeneral-8.0-gd.lib
vtkImagingHybrid-8.0-gd.lib
vtkImagingMath-8.0-gd.lib
vtkImagingMorphological-8.0-gd.lib
vtkImagingSources-8.0-gd.lib
vtkImagingStatistics-8.0-gd.lib
vtkImagingStencil-8.0-gd.lib
vtkInfovisCore-8.0-gd.lib
vtkInfovisLayout-8.0-gd.lib
vtkInteractionImage-8.0-gd.lib
vtkInteractionStyle-8.0-gd.lib
vtkInteractionWidgets-8.0-gd.lib
vtkIOAMR-8.0-gd.lib
vtkIOCore-8.0-gd.lib
vtkIOEnSight-8.0-gd.lib
vtkIOExodus-8.0-gd.lib
vtkIOExport-8.0-gd.lib
vtkIOGeometry-8.0-gd.lib
vtkIOImage-8.0-gd.lib
vtkIOImport-8.0-gd.lib
vtkIOInfovis-8.0-gd.lib
vtkIOLegacy-8.0-gd.lib
vtkIOLSDyna-8.0-gd.lib
vtkIOMINC-8.0-gd.lib
vtkIOMovie-8.0-gd.lib
vtkIONetCDF-8.0-gd.lib
vtkIOParallel-8.0-gd.lib
vtkIOPLY-8.0-gd.lib
vtkIOSQL-8.0-gd.lib
vtkIOVideo-8.0-gd.lib
vtkIOXML-8.0-gd.lib
vtkIOXMLParser-8.0-gd.lib
vtkjpeg-8.0-gd.lib
vtkjsoncpp-8.0-gd.lib
vtklibxml2-8.0-gd.lib
vtkmetaio-8.0-gd.lib
vtkNetCDF-8.0-gd.lib
vtknetcdf_c++-gd.lib
vtkoggtheora-8.0-gd.lib
vtkParallelCore-8.0-gd.lib
vtkpng-8.0-gd.lib
vtkproj4-8.0-gd.lib
vtkRenderingAnnotation-8.0-gd.lib
vtkRenderingContext2D-8.0-gd.lib
vtkRenderingCore-8.0-gd.lib
vtkRenderingFreeType-8.0-gd.lib
vtkRenderingImage-8.0-gd.lib
vtkRenderingLabel-8.0-gd.lib
vtkRenderingLOD-8.0-gd.lib
vtkRenderingVolume-8.0-gd.lib
vtksqlite-8.0-gd.lib
vtksys-8.0-gd.lib
vtktiff-8.0-gd.lib
vtkverdict-8.0-gd.lib
vtkViewsContext2D-8.0-gd.lib
vtkViewsCore-8.0-gd.lib
vtkViewsInfovis-8.0-gd.lib
vtkzlib-8.0-gd.lib
OpenNI2.lib
Release:
pcl_common_release.lib
pcl_features_release.lib
pcl_filters_release.lib
pcl_io_release.lib
pcl_io_ply_release.lib
pcl_kdtree_release.lib
pcl_keypoints_release.lib
pcl_ml_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_stereo_release.lib
pcl_surface_release.lib
pcl_tracking_release.lib
pcl_visualization_release.lib
libboost_atomic-vc140-mt-1_64.lib
libboost_bzip2-vc140-mt-1_64.lib
libboost_chrono-vc140-mt-1_64.lib
libboost_container-vc140-mt-1_64.lib
libboost_context-vc140-mt-1_64.lib
libboost_contract-vc140-mt-1_64.lib
libboost_coroutine-vc140-mt-1_64.lib
libboost_date_time-vc140-mt-1_64.lib
libboost_exception-vc140-mt-1_64.lib
libboost_fiber-vc140-mt-1_64.lib
libboost_filesystem-vc140-mt-1_64.lib
libboost_graph-vc140-mt-1_64.lib
libboost_graph_parallel-vc140-mt-1_64.lib
libboost_iostreams-vc140-mt-1_64.lib
libboost_json-vc140-mt-1_64.lib
libboost_locale-vc140-mt-1_64.lib
libboost_log-vc140-mt-1_64.lib
libboost_log_setup-vc140-mt-1_64.lib
libboost_math_c99-vc140-mt-1_64.lib
libboost_math_c99f-vc140-mt-1_64.lib
libboost_math_c99l-vc140-mt-1_64.lib
libboost_math_tr1-vc140-mt-1_64.lib
libboost_math_tr1f-vc140-mt-1_64.lib
libboost_math_tr1l-vc140-mt-1_64.lib
libboost_mpi-vc140-mt-1_64.lib
libboost_nowide-vc140-mt-1_64.lib
libboost_numpy38-vc140-mt-1_64.lib
libboost_prg_exec_monitor-vc140-mt-1_64.lib
libboost_program_options-vc140-mt-1_64.lib
libboost_python38-vc140-mt-1_64.lib
libboost_random-vc140-mt-1_64.lib
libboost_regex-vc140-mt-1_64.lib
libboost_serialization-vc140-mt-1_64.lib
libboost_stacktrace_noop-vc140-mt-1_64.lib
libboost_stacktrace_windbg-vc140-mt-1_64.lib
libboost_stacktrace_windbg_cached-vc140-mt-1_64.lib
libboost_system-vc140-mt-1_64.lib
libboost_test_exec_monitor-vc140-mt-1_64.lib
libboost_thread-vc140-mt-1_64.lib
libboost_timer-vc140-mt-1_64.lib
libboost_type_erasure-vc140-mt-1_64.lib
libboost_unit_test_framework-vc140-mt-1_64.lib
libboost_wave-vc140-mt-1_64.lib
libboost_wserialization-vc140-mt-1_64.lib
libboost_zlib-vc140-mt-1_64.lib
flann.lib
flann_cpp.lib
flann_cpp_s.lib
flann_s.lib
qhullcpp.lib
qhullstatic.lib
qhullstatic_r.lib
qhull_r.lib
vtkChartsCore-8.0.lib
vtkCommonColor-8.0.lib
vtkCommonComputationalGeometry-8.0.lib
vtkCommonCore-8.0.lib
vtkCommonDataModel-8.0.lib
vtkCommonExecutionModel-8.0.lib
vtkCommonMath-8.0.lib
vtkCommonMisc-8.0.lib
vtkCommonSystem-8.0.lib
vtkCommonTransforms-8.0.lib
vtkDICOMParser-8.0.lib
vtkDomainsChemistry-8.0.lib
vtkDomainsChemistryOpenGL2-8.0.lib
vtkdoubleconversion-8.0.lib
vtkexodusII-8.0.lib
vtkexpat-8.0.lib
vtkFiltersAMR-8.0.lib
vtkFiltersCore-8.0.lib
vtkFiltersExtraction-8.0.lib
vtkFiltersFlowPaths-8.0.lib
vtkFiltersGeneral-8.0.lib
vtkFiltersGeneric-8.0.lib
vtkFiltersGeometry-8.0.lib
vtkFiltersHybrid-8.0.lib
vtkFiltersHyperTree-8.0.lib
vtkFiltersImaging-8.0.lib
vtkFiltersModeling-8.0.lib
vtkFiltersParallel-8.0.lib
vtkFiltersParallelImaging-8.0.lib
vtkFiltersPoints-8.0.lib
vtkFiltersProgrammable-8.0.lib
vtkFiltersSelection-8.0.lib
vtkFiltersSMP-8.0.lib
vtkFiltersSources-8.0.lib
vtkFiltersStatistics-8.0.lib
vtkFiltersTexture-8.0.lib
vtkFiltersTopology-8.0.lib
vtkFiltersVerdict-8.0.lib
vtkfreetype-8.0.lib
vtkGeovisCore-8.0.lib
vtkgl2ps-8.0.lib
vtkglew-8.0.lib
vtkhdf5-8.0.lib
vtkhdf5_hl-8.0.lib
vtkImagingColor-8.0.lib
vtkImagingCore-8.0.lib
vtkImagingFourier-8.0.lib
vtkImagingGeneral-8.0.lib
vtkImagingHybrid-8.0.lib
vtkImagingMath-8.0.lib
vtkImagingMorphological-8.0.lib
vtkImagingSources-8.0.lib
vtkImagingStatistics-8.0.lib
vtkImagingStencil-8.0.lib
vtkInfovisCore-8.0.lib
vtkInfovisLayout-8.0.lib
vtkInteractionImage-8.0.lib
vtkInteractionStyle-8.0.lib
vtkInteractionWidgets-8.0.lib
vtkIOAMR-8.0.lib
vtkIOAsynchronous-8.0.lib
vtkIOCityGML-8.0.lib
vtkIOCore-8.0.lib
vtkIOEnSight-8.0.lib
vtkIOExodus-8.0.lib
vtkIOExport-8.0.lib
vtkIOExportGL2PS-8.0.lib
vtkIOExportPDF-8.0.lib
vtkIOGeometry-8.0.lib
vtkIOImage-8.0.lib
vtkIOImport-8.0.lib
vtkIOInfovis-8.0.lib
vtkIOLegacy-8.0.lib
vtkIOLSDyna-8.0.lib
vtkIOMINC-8.0.lib
vtkIOMotionFX-8.0.lib
vtkIOMovie-8.0.lib
vtkIONetCDF-8.0.lib
vtkIOOggTheora-8.0.lib
vtkIOParallel-8.0.lib
vtkIOParallelXML-8.0.lib
vtkIOPLY-8.0.lib
vtkIOSegY-8.0.lib
vtkIOSQL-8.0.lib
vtkIOTecplotTable-8.0.lib
vtkIOVeraOut-8.0.lib
vtkIOVideo-8.0.lib
vtkIOXML-8.0.lib
vtkIOXMLParser-8.0.lib
vtkjpeg-8.0.lib
vtkjsoncpp-8.0.lib
vtklibharu-8.0.lib
vtklibproj-8.0.lib
vtklibxml2-8.0.lib
vtkloguru-8.0.lib
vtklz4-8.0.lib
vtklzma-8.0.lib
vtkmetaio-8.0.lib
vtknetcdf-8.0.lib
vtkogg-8.0.lib
vtkParallelCore-8.0.lib
vtkParallelDIY-8.0.lib
vtkpng-8.0.lib
vtkpugixml-8.0.lib
vtkRenderingAnnotation-8.0.lib
vtkRenderingContext2D-8.0.lib
vtkRenderingContextOpenGL2-8.0.lib
vtkRenderingCore-8.0.lib
vtkRenderingFreeType-8.0.lib
vtkRenderingGL2PSOpenGL2-8.0.lib
vtkRenderingImage-8.0.lib
vtkRenderingLabel-8.0.lib
vtkRenderingLOD-8.0.lib
vtkRenderingOpenGL2-8.0.lib
vtkRenderingSceneGraph-8.0.lib
vtkRenderingUI-8.0.lib
vtkRenderingVolume-8.0.lib
vtkRenderingVolumeOpenGL2-8.0.lib
vtkRenderingVtkJS-8.0.lib
vtksqlite-8.0.lib
vtksys-8.0.lib
vtkTestingRendering-8.0.lib
vtktheora-8.0.lib
vtktiff-8.0.lib
vtkverdict-8.0.lib
vtkViewsContext2D-8.0.lib
vtkViewsCore-8.0.lib
vtkViewsInfovis-8.0.lib
vtkWrappingTools-8.0.lib
vtkzlib-8.0.lib

以上,VS项目配置完成。

Demo代码:

#include "stdafx.h"
#include<iostream>
#include<pcl/io/pcd_io.h>
#include<pcl/visualization/cloud_viewer.h>

void viewerOneOff(pcl::visualization::PCLVisualizer& viewer) {
	viewer.setBackgroundColor(0.5, 0.9, 0.5);   //设置背景颜色
}
int main() {
	pcl::PointCloud<pcl::PointXYZ>::Ptr cloud(new pcl::PointCloud<pcl::PointXYZ>);
	char strfilepath[256] = "rabbit.pcd";//这里填点云路径
	pcl::io::loadPCDFile(strfilepath, *cloud);
	pcl::visualization::CloudViewer viewer("Cloud Viewer");   //创建viewer对象
	viewer.showCloud(cloud);
	viewer.runOnVisualizationThreadOnce(viewerOneOff);
	pcl::io::savePCDFile("Savepcd.pcd", *cloud);
	system("pause");
	return 0;
}

点击运行!兔子就出来了,至此PCL基于C++与QT的环境配置结束。
在这里插入图片描述

  • 12
    点赞
  • 62
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 11
    评论
### 回答1: 1. 安装Visual Studio 2019 2. 下载VTK源代码,并使用CMake生成Visual Studio 2019的解决方案文件 3. 在Visual Studio 2019中打开解决方案文件,并编译VTK 4. 下载Qt,并安装Qt Visual Studio Tools插件 5. 在Visual Studio 2019中创建一个Qt项目,并将VTK库添加到项目中 6. 下载PCL源代码,并使用CMake生成Visual Studio 2019的解决方案文件 7. 在Visual Studio 2019中打开解决方案文件,并编译PCL 8. 在Qt项目中使用PCL库 ### 回答2: vs2019是一款强大的集成开发工具,在科学计算和数据处理等领域有着广泛的应用。其中,vtk、qtpcl是大型图形库和点云库,具有很高的专业性和复杂性。要想在vs2019中成功配置这些库的环境,需要具备较高的技术实力和一定的耐心和毅力。 配置vtk环境 1. 下载vtk源码包,解压到本地目录。 2. 在vs2019中新建空白c++项目,如MyVTK。 3. 在项目属性管理器中,右键单击“全部配置”并选择“属性”。 4. 选择“VC++目录”,在“包含目录”中添加vtk源码包中的include目录,如“D:\VTK8.2.0\include\vtk-8.2”。 5. 在“库目录”中,添加vtk源码包中的lib目录,如“D:\VTK8.2.0\lib\Debug”。 6. 在“链接器”的“输入”中,添加以下依赖库:vtkCommonCore-8.2d.lib、vtkFiltersSources-8.2d.lib、vtkRenderingOpenGL2-8.2d.lib、vtkIOImage-8.2d.lib、vtkInteractionStyle-8.2d.lib、vtkRenderingCore-8.2d.lib。 7. 在项目中添加测试代码,并编译运行查看执行结果。 配置qt环境 1. 下载qt源码包,在vs2019中新建qt控制台程序项目。 2. 在Qt Creator中,打开项目属性,选择“构建与运行”。 3. 选择“编译环境”,确保设置了正确的Qt版本。 4. 对于动态链接,需要在“连接”中添加Qt库,如QT += core gui widgets等。 5. 对于静态链接,需要在项目属性下的“C/C++”中,添加“头文件路径”和“源文件路径”,并在“链接”中添加Qt的lib库。 6. 测试项目是否能够正常编译运行。 配置pcl环境 1. 下载pcl源码包,解压到本地目录。 2. 在vs2019中新建空白c++项目,如MyPCL。 3. 在项目属性管理器中,右键单击“全部配置”并选择“属性”。 4. 选择“VC++目录”,在“包含目录”中添加pcl源码包中的include目录,如“E:\PCL1.11.1\include\pcl-1.11”。 5. 在“库目录”中,添加pcl源码包中的lib目录,如“E:\PCL1.11.1\lib”。 6. 在“链接器”的“输入”中,添加以下依赖库:pcl_common_debug.lib、pcl_io_debug.lib、pcl_kdtree_debug.lib、pcl_octree_debug.lib、pcl_sample_consensus_debug.lib、pcl_segmentation_debug.lib、pcl_surface_debug.lib等。 7. 在项目中添加测试代码,并编译运行查看执行结果。 总之,vs2019 vtk qt pcl配置环境并不是一件短时间内能够完成的任务,需要耐心细致和不断尝试和排错,同时需要理解这些库的基本概念和技术细节,才能达到较好的调试效果。 ### 回答3: 在进行vs2019 vtk qt pcl配置环境之前,首先需要确保计算机上已经安装好了vs2019、vtk、qt以及pcl等相应的软件和库文件。以下为具体的配置步骤: 1. 安装vtk vtk是一个用于3D可视化和图像处理的开源库,可下载安装包进行安装。安装完成后,需要将vtk的路径添加到系统环境变量中。 2. 安装qt qt是跨平台的C++应用程序开发框架,也可下载安装包进行安装。安装完成后,还需要安装qt creator。 3. 安装pcl pcl是点云库,可通过官网下载安装包进行安装。安装完成后,还需要将pcl的路径添加到系统环境变量中。 4. 配置vs2019 a) 在visual studio中创建项目,选择qt项目,并选择要使用的qt版本。 b) 选择Qt VS Tools插件,打开“Qt VS Tools”向导,选择已安装的qt版本和构建目录。 c) 在项目属性中,进行vtk和pcl配置设置。具体步骤为:选择“属性” -> “C/C++” -> “常规”,在“附加包含目录”处添加vtk和pcl的路径。然后选择“链接器” -> “常规”,在“附加库目录”处添加vtk和pcl的路径。最后,在“链接器” -> “输入”处添加vtk和pcl的库文件名。 5. 运行示例程序 在visual studio中打开示例程序,编译和运行。如果程序能够正常的运行并显示出3D图像,则说明配置环境成功。 总之,vs2019 vtk qt pcl配置环境需要先安装相应的软件和库文件,然后进行相应的配置设置。如果一步步按照上述步骤操作,就可以成功地配置出一个可用的开发环境,从而实现3D可视化和图像处理的功能。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Cheng先生啊

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值