一、概要
在计算机视觉和机器人领域里,PCL 通常指 Point Cloud Library(点云库):一个用于 2D/3D 图像和点云处理的开源 C++ 库,广泛用于机器人、自动驾驶、三维重建、激光雷达/RGB‑D 视觉等方向。
这里的演示以PCL-1.15.1为例,会直接给出相关配置数据,如果你安装的是1.15版本,可以直接复制。对于其它版本,我也会给出相应的解决方法或者代码,用来获取需要的配置信息。
二、前提安装
在使用PCL开发自己的项目之前需要安装相应的代码编辑器,通常使用“Visual Studio ”,后面的配置也是基于这个编辑器。我自己用的是2022版本的,其它版本的也可以,但是要考虑它与你自己下载的PCL是否兼容
可以直接去官网下载,或者直接点击这个链接:Visual Studio官网下载
三、安装Visual Studio 2022
1、简要介绍
可能你使用过VSCode编写过C \ C++代码,但是对于Visual Studio的了解比较少。简单来说,Visual Studio与VSCode一样,都是为用户提供编写代码窗口的编辑器。不同的是Visual Studio更加专业化,而VSCode则更加轻量级。
这里演示的是PCL-1.15.1版本,这个版本官方参照的C++编译器是MSVC,版本是2022。而Visual Studio使用的编译器就是MSVC,这也就是使用它来作为编辑器的原因,PCL-1.15.1参照的是MSVC2022,如果用别的编译器版本就会出错。这是非常重要的,在下载之前一定要对照好版本!!!
2、下载完成之后启动

点击继续…
3、选择“使用C++的桌面开发”

4、选择MSVC编译器(必须!!!)

这里下载编译器,是必选的,下拉就会找到。其余的,除过系统自动勾选的,你也可以根据自己的需要勾选别的。Visual Studio也支持修改下载的工具,如果忘记下载了什么或者多下载了什么工具,都可以后续自行更改。
同时,如果害怕C盘空间不够的话,可以尝试自己更改一下安装位置。我一般直接将这些与开发相关的就直接装在C盘了,很省力,也会避免后面使用时可能出现的路径问题。
5、点击下载 \ 修改

6、下载完成

7、文件位置(没有自己修改下载位置的话)

位置小编给大家放这了,直接复制就行:
C:\Program Files\Microsoft Visual Studio\2022\Community\Common7\IDE
在该目录下寻找文件devenv.exe,然后创建桌面方式:

选择创建快捷方式:

完成!

四、安装PCL
1、简要说明
小编使用的版本是PCL-1.15.1,后续的演示也就是基于这个版本进行演示。不同的版本,比如你是1.14版本的,在后续的配置过程当中可能会有不同,小编会在后面说明,请关注,如果版本不一样不要照搬!!!
这里以另外一个作者写的安装1.14版本的PCL教程作为参考:
1.14版本安装PCL教程
2、下载安装包
下载PCL(1.15版本):官方网站
点击下载:

3、下载完成之后双击启动

点击下一步
4、我接受

5、按照顺序选择,然后下一步

6、选择安装目录,放到其它盘,然后点击下一步

7、下一步

8、点击安装

9、安装完成!

五、(正片开始)配置开发环境
1、配置环境变量
- 唤醒系统属性界面:Win + R,在窗口输入sysdm.cpl

- 选择“高级”并选择“环境变量”

- 编辑环境变量

- 点击新建并添加以下几项
%PCL_ROOT%\bin
%PCL_ROOT%\3rdParty\VTK\bin
%PCL_ROOT%\3rdParty\FLANN\bin
C:\Program Files\OpenNI2\Tools
%PCL_ROOT%\3rdParty\Qhull\bin
%OPENNI2_REDIST64%
%OPENNI2_LIB64%
%OPENNI2_INCLUDE64%

- 点击确定

2、开始配置VS
创建新的项目:

3、选择语言C++

4、创建空项目

选择后点击下一步
5、自己选择项目位置,然后添加

6、选择属性管理器

7、添加配置属性

8、命名配置文件

完成后点击添加
9、打开配置文件

10、设置SDL检查为否

11、“符合模式”设置为否

12、选择高级矢量扩展

13、配置包含目录
如果你的下载位置是从D:/PCL/这个路径下的,而且版本是1.15.0,那么就可以直接复制小编的地址。地址放在文章的最后啦!如果不是,继续看下面的操作。
打开你自己下载的文件路径,无论你是1.14版本还是1.15版本:
一直到这个目录下

小编是1.15,所以路径就是1.15
然后,进入子目录include,然后继续选择版本目录:

复制地址,最好先暂存到一个地方,自己建立txt文件,或者微信、QQ聊天框都行,将地址放上去:

继续,退回到原来的主目录,选择\3rdParty,进入:

记住这个路径,然后进入\Boost\include,选择版本目录:

然后复制,将这个路径也暂存下来,然后退回到目录\3rdParty里面,选择\Eigen3\include\eigen3,然后复制路径:

继续将这个路径缓存下来,然后退回到那个目录中,如此往复,继续寻找类似于下面的子目录,并缓存下来:
\FLANN\include
\Qhull\include
\VTK\include\vtk-9.4
除此之外,再添加一个目录:C:\Program Files\OpenNI2\Include
接下来将这些缓存的内容传给包含目录:

将前面获取的路径全部一个个添加进去:

结果如下所示:

完成之后按确定。
14、预处理器定义

添加如下几行:
BOOST_USE_WINDOWS_H
NOMINMAX
_CRT_SECURE_NO_DEPRECATE

15、配置库目录
如果你的下载位置是从D:/PCL/这个路径下的,而且版本是1.15.0,那么就可以直接复制小编的地址。同样,地址放在文章的最后啦!

还是和前面一样,打开你自己下载的文件的目录:

选择子目录 \lib:

同样,复制并暂存路径,然后返回主目录,选择\3rdParty,并进入:

随后,和前面的做法一样,设法找到类似于这样的目录,进入并复制路径,然后缓存:
\3rdParty\Boost\lib
\3rdParty\FLANN\lib
\3rdParty\Qhull\lib
\3rdParty\VTK\lib
最后,再添加这样一个路径:
C:\Program Files\OpenNI2\Lib

16、配置附加依赖项

这里需要将相关文件放进去,1.14与1.15的命名方式有所不同。这里小编写了一个python代码,将文件目录输入,然后批量取出即可:
import os
def extract_files_by_extension(folder_path, target_extension, output_file, exclude_string=None):
"""
从指定文件夹中提取特定扩展名的文件路径,并保存到文本文件中。
扩展名:.ply
:param folder_path: 要扫描的文件夹路径
:param target_extension: 目标扩展名(例如 '.txt')
:param output_file: 保存结果的文件,存储获取的文件名
:param exclude_string: 排除包含该字符串的文件(可选,默认为None表示不排除)
"""
# 1. 初始化存储列表
matched_files = []
print(f"正在扫描文件夹: {folder_path}")
print(f"查找扩展名: {target_extension}")
if exclude_string:
print(f"排除包含字符串: {exclude_string}")
# 3. 遍历目录
for filename in os.listdir(folder_path):
# 先检查扩展名
if filename.endswith(target_extension):
# 再检查是否包含排除字符串
if exclude_string and exclude_string in filename:
continue # 跳过包含排除字符串的文件
matched_files.append(filename)
# 4. 保存结果到文件
if matched_files:
try:
with open(output_file, 'w', encoding='utf-8') as f:
for filename in matched_files:
# 每个元素占一行
f.write(filename + '\n')
print(f"成功!共找到 {len(matched_files)} 个文件。")
print(f"结果已保存至: {output_file}")
except IOError as e:
print(f"保存文件时出错: {e}")
else:
print("未找到匹配的文件。")
if __name__ == "__main__":
# 配置参数(请根据实际情况修改以下路径)
target_folder = r"路径"
ext = ".lib"
save_file = "输出文件名.txt"
exclude_str = "-gd" # 设置为 None 或 "" 表示不排除任何文件
# 检查文件夹是否存在
if os.path.exists(target_folder):
extract_files_by_extension(target_folder, ext, save_file, exclude_str)
else:
print(f"错误:文件夹路径不存在 -> {target_folder}")
这里需要将VTK里面的(.lib)文件取出,小编直接用自己的下载路径了,大家用的时候就根据这个找到自己的位置,然后放到变量target_folder中去:
D:\PCL\PCL 1.15.0\3rdParty\VTK\lib
记得设置输出文件,比如text1.txt。
运行结束之后,重新设置路径,小编这里是D:\PCL\PCL 1.15.0\lib。然后设置变量exclude_str为“d.lib”,然后设置输出文件,比如text2.txt。
这样,就获取了所有的文件名:
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
vtkcgns-9.4.lib
vtkChartsCore-9.4.lib
vtkCommonColor-9.4.lib
vtkCommonComputationalGeometry-9.4.lib
vtkCommonCore-9.4.lib
vtkCommonDataModel-9.4.lib
vtkCommonExecutionModel-9.4.lib
vtkCommonMath-9.4.lib
vtkCommonMisc-9.4.lib
vtkCommonSystem-9.4.lib
vtkCommonTransforms-9.4.lib
vtkDICOMParser-9.4.lib
vtkDomainsChemistry-9.4.lib
vtkDomainsChemistryOpenGL2-9.4.lib
vtkdoubleconversion-9.4.lib
vtkexodusII-9.4.lib
vtkexpat-9.4.lib
vtkFiltersAMR-9.4.lib
vtkFiltersCellGrid-9.4.lib
vtkFiltersCore-9.4.lib
vtkFiltersExtraction-9.4.lib
vtkFiltersFlowPaths-9.4.lib
vtkFiltersGeneral-9.4.lib
vtkFiltersGeneric-9.4.lib
vtkFiltersGeometry-9.4.lib
vtkFiltersGeometryPreview-9.4.lib
vtkFiltersHybrid-9.4.lib
vtkFiltersHyperTree-9.4.lib
vtkFiltersImaging-9.4.lib
vtkFiltersModeling-9.4.lib
vtkFiltersParallel-9.4.lib
vtkFiltersParallelImaging-9.4.lib
vtkFiltersPoints-9.4.lib
vtkFiltersProgrammable-9.4.lib
vtkFiltersReduction-9.4.lib
vtkFiltersSelection-9.4.lib
vtkFiltersSMP-9.4.lib
vtkFiltersSources-9.4.lib
vtkFiltersStatistics-9.4.lib
vtkFiltersTemporal-9.4.lib
vtkFiltersTensor-9.4.lib
vtkFiltersTexture-9.4.lib
vtkFiltersTopology-9.4.lib
vtkFiltersVerdict-9.4.lib
vtkfmt-9.4.lib
vtkfreetype-9.4.lib
vtkGeovisCore-9.4.lib
vtkgl2ps-9.4.lib
vtkglad-9.4.lib
vtkhdf5-9.4.lib
vtkhdf5_hl-9.4.lib
vtkImagingColor-9.4.lib
vtkImagingCore-9.4.lib
vtkImagingFourier-9.4.lib
vtkImagingGeneral-9.4.lib
vtkImagingHybrid-9.4.lib
vtkImagingMath-9.4.lib
vtkImagingMorphological-9.4.lib
vtkImagingSources-9.4.lib
vtkImagingStatistics-9.4.lib
vtkImagingStencil-9.4.lib
vtkInfovisCore-9.4.lib
vtkInfovisLayout-9.4.lib
vtkInteractionImage-9.4.lib
vtkInteractionStyle-9.4.lib
vtkInteractionWidgets-9.4.lib
vtkIOAMR-9.4.lib
vtkIOAsynchronous-9.4.lib
vtkIOCellGrid-9.4.lib
vtkIOCesium3DTiles-9.4.lib
vtkIOCGNSReader-9.4.lib
vtkIOChemistry-9.4.lib
vtkIOCityGML-9.4.lib
vtkIOCONVERGECFD-9.4.lib
vtkIOCore-9.4.lib
vtkIOEngys-9.4.lib
vtkIOEnSight-9.4.lib
vtkIOERF-9.4.lib
vtkIOExodus-9.4.lib
vtkIOExport-9.4.lib
vtkIOExportGL2PS-9.4.lib
vtkIOExportPDF-9.4.lib
vtkIOFDS-9.4.lib
vtkIOFLUENTCFF-9.4.lib
vtkIOGeometry-9.4.lib
vtkIOHDF-9.4.lib
vtkIOImage-9.4.lib
vtkIOImport-9.4.lib
vtkIOInfovis-9.4.lib
vtkIOIOSS-9.4.lib
vtkIOLegacy-9.4.lib
vtkIOLSDyna-9.4.lib
vtkIOMINC-9.4.lib
vtkIOMotionFX-9.4.lib
vtkIOMovie-9.4.lib
vtkIONetCDF-9.4.lib
vtkIOOggTheora-9.4.lib
vtkIOParallel-9.4.lib
vtkIOParallelXML-9.4.lib
vtkIOPLY-9.4.lib
vtkIOSegY-9.4.lib
vtkIOSQL-9.4.lib
vtkioss-9.4.lib
vtkIOTecplotTable-9.4.lib
vtkIOVeraOut-9.4.lib
vtkIOVideo-9.4.lib
vtkIOXML-9.4.lib
vtkIOXMLParser-9.4.lib
vtkjpeg-9.4.lib
vtkjsoncpp-9.4.lib
vtkkissfft-9.4.lib
vtklibharu-9.4.lib
vtklibproj-9.4.lib
vtklibxml2-9.4.lib
vtkloguru-9.4.lib
vtklz4-9.4.lib
vtklzma-9.4.lib
vtkmetaio-9.4.lib
vtknetcdf-9.4.lib
vtkogg-9.4.lib
vtkParallelCore-9.4.lib
vtkParallelDIY-9.4.lib
vtkpng-9.4.lib
vtkpugixml-9.4.lib
vtkRenderingAnnotation-9.4.lib
vtkRenderingCellGrid-9.4.lib
vtkRenderingContext2D-9.4.lib
vtkRenderingContextOpenGL2-9.4.lib
vtkRenderingCore-9.4.lib
vtkRenderingFreeType-9.4.lib
vtkRenderingGL2PSOpenGL2-9.4.lib
vtkRenderingHyperTreeGrid-9.4.lib
vtkRenderingImage-9.4.lib
vtkRenderingLabel-9.4.lib
vtkRenderingLICOpenGL2-9.4.lib
vtkRenderingLOD-9.4.lib
vtkRenderingOpenGL2-9.4.lib
vtkRenderingSceneGraph-9.4.lib
vtkRenderingUI-9.4.lib
vtkRenderingVolume-9.4.lib
vtkRenderingVolumeOpenGL2-9.4.lib
vtkRenderingVtkJS-9.4.lib
vtksqlite-9.4.lib
vtksys-9.4.lib
vtkTestingCore-9.4.lib
vtkTestingRendering-9.4.lib
vtktheora-9.4.lib
vtktiff-9.4.lib
vtktoken-9.4.lib
vtkverdict-9.4.lib
vtkViewsContext2D-9.4.lib
vtkViewsCore-9.4.lib
vtkViewsInfovis-9.4.lib
vtkWrappingTools-9.4.lib
vtkzlib-9.4.lib
还是那句话,这个只适用于1.15版本 ,1.14需要你们自己获取,否则就会配置错误!!!

17、配置完成

18、保存配置

19、打开解决方案管理器

20、点击属性并编辑环境


点进入,然后将下面这一段复制下来:
PATH=(PCL_ROOT)\bin;(PCL_ROOT)\3rdParty\FLANN\bin;(PCL_ROOT)\3rdParty\VTK\bin;(PCL_ROOT)\3rdParty\Qhull\bin;C:\Program Files\OpenNI2\Tools;$(PATH)
点击确定…

21、完成配置

22、重新打开属性管理器

23、添加新的项目表

24、重复9到15步
22、配置附加依赖项

然后还是和上面一样,小编提供了这个代码:
import os
def extract_files_by_extension(folder_path, target_extension, output_file, exclude_string=None):
"""
从指定文件夹中提取特定扩展名的文件路径,并保存到文本文件中。
:param folder_path: 要扫描的文件夹路径
:param target_extension: 目标扩展名(例如 '.txt' 或 '.jpg')
:param output_file: 保存结果的文件路径
:param exclude_string: 排除包含该字符串的文件(可选,默认为None表示不排除)
"""
# 1. 初始化存储列表
matched_files = []
print(f"正在扫描文件夹: {folder_path}")
print(f"查找扩展名: {target_extension}")
if exclude_string:
print(f"排除包含字符串: {exclude_string}")
# 3. 遍历目录
for filename in os.listdir(folder_path):
# 先检查扩展名
if filename.endswith(target_extension):
if exclude_string and exclude_string in filename:
matched_files.append(filename) # 跳过不包含排除字符串的文件
# 4. 保存结果到文件
if matched_files:
try:
with open(output_file, 'w', encoding='utf-8') as f:
for filename in matched_files:
# 每个元素占一行
f.write(filename + '\n')
print(f"成功!共找到 {len(matched_files)} 个文件。")
print(f"结果已保存至: {output_file}")
except IOError as e:
print(f"保存文件时出错: {e}")
else:
print("未找到匹配的文件。")
# ================= 使用示例 =================
if __name__ == "__main__":
# 配置参数(请根据实际情况修改以下路径)
target_folder = r"地址"
ext = ".lib"
save_file = "输出文件.txt"
# 新增:排除包含此字符串的文件
exclude_str = "-gd" # 设置为 None 或 "" 表示不排除任何文件
# 检查文件夹是否存在
if os.path.exists(target_folder):
extract_files_by_extension(target_folder, ext, save_file, exclude_str)
else:
print(f"错误:文件夹路径不存在 -> {target_folder}")
还是一样,设置地址,小编这里是D:\PCL\PCL 1.15.0\3rdParty\VTK\lib,还有输出文件名,如text3.txt。
运行结束后,重新设置地址,小编是D:\PCL\PCL 1.15.0\lib,然后修设置变量exclude_str为“d.lib”,然后设置输出文件,比如text4.txt。
结果就是:
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
vtkcgns-9.4-gd.lib
vtkChartsCore-9.4-gd.lib
vtkCommonColor-9.4-gd.lib
vtkCommonComputationalGeometry-9.4-gd.lib
vtkCommonCore-9.4-gd.lib
vtkCommonDataModel-9.4-gd.lib
vtkCommonExecutionModel-9.4-gd.lib
vtkCommonMath-9.4-gd.lib
vtkCommonMisc-9.4-gd.lib
vtkCommonSystem-9.4-gd.lib
vtkCommonTransforms-9.4-gd.lib
vtkDICOMParser-9.4-gd.lib
vtkDomainsChemistry-9.4-gd.lib
vtkDomainsChemistryOpenGL2-9.4-gd.lib
vtkdoubleconversion-9.4-gd.lib
vtkexodusII-9.4-gd.lib
vtkexpat-9.4-gd.lib
vtkFiltersAMR-9.4-gd.lib
vtkFiltersCellGrid-9.4-gd.lib
vtkFiltersCore-9.4-gd.lib
vtkFiltersExtraction-9.4-gd.lib
vtkFiltersFlowPaths-9.4-gd.lib
vtkFiltersGeneral-9.4-gd.lib
vtkFiltersGeneric-9.4-gd.lib
vtkFiltersGeometry-9.4-gd.lib
vtkFiltersGeometryPreview-9.4-gd.lib
vtkFiltersHybrid-9.4-gd.lib
vtkFiltersHyperTree-9.4-gd.lib
vtkFiltersImaging-9.4-gd.lib
vtkFiltersModeling-9.4-gd.lib
vtkFiltersParallel-9.4-gd.lib
vtkFiltersParallelImaging-9.4-gd.lib
vtkFiltersPoints-9.4-gd.lib
vtkFiltersProgrammable-9.4-gd.lib
vtkFiltersReduction-9.4-gd.lib
vtkFiltersSelection-9.4-gd.lib
vtkFiltersSMP-9.4-gd.lib
vtkFiltersSources-9.4-gd.lib
vtkFiltersStatistics-9.4-gd.lib
vtkFiltersTemporal-9.4-gd.lib
vtkFiltersTensor-9.4-gd.lib
vtkFiltersTexture-9.4-gd.lib
vtkFiltersTopology-9.4-gd.lib
vtkFiltersVerdict-9.4-gd.lib
vtkfmt-9.4-gd.lib
vtkfreetype-9.4-gd.lib
vtkGeovisCore-9.4-gd.lib
vtkgl2ps-9.4-gd.lib
vtkglad-9.4-gd.lib
vtkhdf5-9.4-gd.lib
vtkhdf5_hl-9.4-gd.lib
vtkImagingColor-9.4-gd.lib
vtkImagingCore-9.4-gd.lib
vtkImagingFourier-9.4-gd.lib
vtkImagingGeneral-9.4-gd.lib
vtkImagingHybrid-9.4-gd.lib
vtkImagingMath-9.4-gd.lib
vtkImagingMorphological-9.4-gd.lib
vtkImagingSources-9.4-gd.lib
vtkImagingStatistics-9.4-gd.lib
vtkImagingStencil-9.4-gd.lib
vtkInfovisCore-9.4-gd.lib
vtkInfovisLayout-9.4-gd.lib
vtkInteractionImage-9.4-gd.lib
vtkInteractionStyle-9.4-gd.lib
vtkInteractionWidgets-9.4-gd.lib
vtkIOAMR-9.4-gd.lib
vtkIOAsynchronous-9.4-gd.lib
vtkIOCellGrid-9.4-gd.lib
vtkIOCesium3DTiles-9.4-gd.lib
vtkIOCGNSReader-9.4-gd.lib
vtkIOChemistry-9.4-gd.lib
vtkIOCityGML-9.4-gd.lib
vtkIOCONVERGECFD-9.4-gd.lib
vtkIOCore-9.4-gd.lib
vtkIOEngys-9.4-gd.lib
vtkIOEnSight-9.4-gd.lib
vtkIOERF-9.4-gd.lib
vtkIOExodus-9.4-gd.lib
vtkIOExport-9.4-gd.lib
vtkIOExportGL2PS-9.4-gd.lib
vtkIOExportPDF-9.4-gd.lib
vtkIOFDS-9.4-gd.lib
vtkIOFLUENTCFF-9.4-gd.lib
vtkIOGeometry-9.4-gd.lib
vtkIOHDF-9.4-gd.lib
vtkIOImage-9.4-gd.lib
vtkIOImport-9.4-gd.lib
vtkIOInfovis-9.4-gd.lib
vtkIOIOSS-9.4-gd.lib
vtkIOLegacy-9.4-gd.lib
vtkIOLSDyna-9.4-gd.lib
vtkIOMINC-9.4-gd.lib
vtkIOMotionFX-9.4-gd.lib
vtkIOMovie-9.4-gd.lib
vtkIONetCDF-9.4-gd.lib
vtkIOOggTheora-9.4-gd.lib
vtkIOParallel-9.4-gd.lib
vtkIOParallelXML-9.4-gd.lib
vtkIOPLY-9.4-gd.lib
vtkIOSegY-9.4-gd.lib
vtkIOSQL-9.4-gd.lib
vtkioss-9.4-gd.lib
vtkIOTecplotTable-9.4-gd.lib
vtkIOVeraOut-9.4-gd.lib
vtkIOVideo-9.4-gd.lib
vtkIOXML-9.4-gd.lib
vtkIOXMLParser-9.4-gd.lib
vtkjpeg-9.4-gd.lib
vtkjsoncpp-9.4-gd.lib
vtkkissfft-9.4-gd.lib
vtklibharu-9.4-gd.lib
vtklibproj-9.4-gd.lib
vtklibxml2-9.4-gd.lib
vtkloguru-9.4-gd.lib
vtklz4-9.4-gd.lib
vtklzma-9.4-gd.lib
vtkmetaio-9.4-gd.lib
vtknetcdf-9.4-gd.lib
vtkogg-9.4-gd.lib
vtkParallelCore-9.4-gd.lib
vtkParallelDIY-9.4-gd.lib
vtkpng-9.4-gd.lib
vtkpugixml-9.4-gd.lib
vtkRenderingAnnotation-9.4-gd.lib
vtkRenderingCellGrid-9.4-gd.lib
vtkRenderingContext2D-9.4-gd.lib
vtkRenderingContextOpenGL2-9.4-gd.lib
vtkRenderingCore-9.4-gd.lib
vtkRenderingFreeType-9.4-gd.lib
vtkRenderingGL2PSOpenGL2-9.4-gd.lib
vtkRenderingHyperTreeGrid-9.4-gd.lib
vtkRenderingImage-9.4-gd.lib
vtkRenderingLabel-9.4-gd.lib
vtkRenderingLICOpenGL2-9.4-gd.lib
vtkRenderingLOD-9.4-gd.lib
vtkRenderingOpenGL2-9.4-gd.lib
vtkRenderingSceneGraph-9.4-gd.lib
vtkRenderingUI-9.4-gd.lib
vtkRenderingVolume-9.4-gd.lib
vtkRenderingVolumeOpenGL2-9.4-gd.lib
vtkRenderingVtkJS-9.4-gd.lib
vtksqlite-9.4-gd.lib
vtksys-9.4-gd.lib
vtkTestingCore-9.4-gd.lib
vtkTestingRendering-9.4-gd.lib
vtktheora-9.4-gd.lib
vtktiff-9.4-gd.lib
vtktoken-9.4-gd.lib
vtkverdict-9.4-gd.lib
vtkViewsContext2D-9.4-gd.lib
vtkViewsCore-9.4-gd.lib
vtkViewsInfovis-9.4-gd.lib
vtkWrappingTools-9.4-gd.lib
vtkzlib-9.4-gd.lib
然后像16步那样,复制进去然后点击确定,然后保存这个文件,这样就完成了所有的配置工作啦!
六、最后的检验
复制代码,在你的项目里面:
#include <iostream>
#include <vector>
#include <ctime>
#include <pcl/point_cloud.h>
#include <pcl/octree/octree.h>
#include <boost/thread/thread.hpp>
#include <pcl/visualization/pcl_visualizer.h>
using namespace std;
int main(int argc, char** argv)
{
srand((unsigned int)time(NULL));
pcl::PointCloud<pcl::PointXYZ>::Ptr cloud(new pcl::PointCloud<pcl::PointXYZ>);
// 创建点云数据
cloud->width = 1000;
cloud->height = 1;
cloud->points.resize(cloud->width * cloud->height);
for (size_t i = 0; i < cloud->points.size(); ++i)
{
cloud->points[i].x = 1024.0f * rand() / (RAND_MAX + 1.0f);
cloud->points[i].y = 1024.0f * rand() / (RAND_MAX + 1.0f);
cloud->points[i].z = 1024.0f * rand() / (RAND_MAX + 1.0f);
}
pcl::octree::OctreePointCloudSearch<pcl::PointXYZ> octree(0.1);
octree.setInputCloud(cloud);
octree.addPointsFromInputCloud();
pcl::PointXYZ searchPoint;
searchPoint.x = 1024.0f * rand() / (RAND_MAX + 1.0f);
searchPoint.y = 1024.0f * rand() / (RAND_MAX + 1.0f);
searchPoint.z = 1024.0f * rand() / (RAND_MAX + 1.0f);
//半径内近邻搜索
vector<int>pointIdxRadiusSearch;
vector<float>pointRadiusSquaredDistance;
float radius = 256.0f * rand() / (RAND_MAX + 1.0f);
cout << "Neighbors within radius search at (" << searchPoint.x
<< " " << searchPoint.y
<< " " << searchPoint.z
<< ") with radius=" << radius << endl;
if (octree.radiusSearch(searchPoint, radius, pointIdxRadiusSearch, pointRadiusSquaredDistance) > 0)
{
for (size_t i = 0; i < pointIdxRadiusSearch.size(); ++i)
cout << " " << cloud->points[pointIdxRadiusSearch[i]].x
<< " " << cloud->points[pointIdxRadiusSearch[i]].y
<< " " << cloud->points[pointIdxRadiusSearch[i]].z
<< " (squared distance: " << pointRadiusSquaredDistance[i] << ")" << endl;
}
// 初始化点云可视化对象
boost::shared_ptr<pcl::visualization::PCLVisualizer>viewer(new pcl::visualization::PCLVisualizer("显示点云"));
viewer->setBackgroundColor(0, 0, 0); //设置背景颜色为黑色
// 对点云着色可视化 (red).
pcl::visualization::PointCloudColorHandlerCustom<pcl::PointXYZ>target_color(cloud, 255, 0, 0);
viewer->addPointCloud<pcl::PointXYZ>(cloud, target_color, "target cloud");
viewer->setPointCloudRenderingProperties(pcl::visualization::PCL_VISUALIZER_POINT_SIZE, 1, "target cloud");
// 等待直到可视化窗口关闭
while (!viewer->wasStopped())
{
viewer->spinOnce(100);
boost::this_thread::sleep(boost::posix_time::microseconds(1000));
}
return (0);
}

然后创建好你的代码文件,将这个代码复制进去,然后点击调试:

如果运行成功,就说明配置成功了!

七、小结
这是前面说的配置包含目录的地址:
D:\PCL\PCL 1.15.0\include\pcl-1.15
D:\PCL\PCL 1.15.0\3rdParty\Boost\include\boost-1_87
D:\PCL\PCL 1.15.0\3rdParty\Eigen3\include\eigen3
D:\PCL\PCL 1.15.0\3rdParty\FLANN\include
D:\PCL\PCL 1.15.0\3rdParty\Qhull\include
D:\PCL\PCL 1.15.0\3rdParty\VTK\include\vtk-9.4
C:\Program Files\OpenNI2\Include
库目录的地址:
D:\PCL\PCL 1.15.0\lib
D:\PCL\PCL 1.15.0\3rdParty\Boost\lib
D:\PCL\PCL 1.15.0\3rdParty\FLANN\lib
D:\PCL\PCL 1.15.0\3rdParty\Qhull\lib
D:\PCL\PCL 1.15.0\3rdParty\VTK\lib
C:\Program Files\OpenNI2\Lib
确保你的版本号,以及下载的位置是一样的,然后再复制!!!
现在,已经完成了PCL的开发环境的搭建,这下就可以使用PCL自己编写相关项目了。
计算机小白,第一个创作稿件。
制作不易,还请留下关注再走鸭。求求了(> _ <)!!!
&spm=1001.2101.3001.5002&articleId=159051949&d=1&t=3&u=b7a615434cf543ea8d1b9303bc7d90b0)
3万+

被折叠的 条评论
为什么被折叠?



