本文详细介绍了如何在Windows 10下安装PCL1.11.1库,并提供了资源包下载、安装教程、环境变量配置等步骤。同时,还解决了环境变量path值大于1023的问题,并指导读者如何配置PCL项目。
由于网络原因,一些朋友可能下载不了,这里我提供了PCL1.11.1+PDB包+Visual Studio 2019 x64的下载。
下载地址1:PCL1.11.1+PDB包+Visual Studio 2019 x64 - 123网盘下载
下载地址2:PCL1.11.1+PDB包+Visual Studio 2019 x64 - 百度网盘下载 提取码: h969
为了学习使用,我选择了PCL1.11.1版本。这不是2024年最新的。由于为了和教程保持一致,所以选择这个版本。
下载地址:https://visualstudio.microsoft.com/downloads/
Visual Studio 2019 Community 社区版(免费版)
简体中文版下载地址:https://visualstudio.microsoft.com/thank-you-downloading-visual-studio/?sku=Community&rel=16
可以先简单了解一下库:
Boost:用于智能指针等操作
Eigen :用于矩阵运算等
FLANN:用于邻域搜索等
VTL:可视化库,用于显示点云等
QHULL:一个强大的计算几何库,可以用于计算高维的Delaunay triangulation, Voronoi diagram ,convex hull,等
OpenNl:用于获取点云等
别的就像安装正常软件一样,主要记得勾选“使用c + +的桌面开发”,可以修改安装路径(目录)
接下来就是漫长的等待过程。
别的倒是没啥。
整个安装过程需要注意以下三点,其它默认即可:
D:\PCL
;AddPCLtothesystemPATHforallusers
;直接运行 PCL-xxxxx-win64.exe。一定要选择第二项Add PCL to the system PATH for all users
路径我设置的是D:\PCL
,如下图:
进行安装:
安装完成:
这一步不是必须的,是小陶的强迫症选项。安装PCL默认会安装到C:\Program Files\OpenNI2
,但是我想安装到PCL一起去。因此需要重新安装。
先卸载旧的:
安装包在:D:\PCL\3rdParty\OpenNI2
安装时候路径改一下就行了:
大功告成,很简单对吧。
有的同志可能会出现“此环境变量太大”情况。
引用CSDN的解决办法:环境变量path的值大于1023的解决办法
1.计算机—>属性—>更改设置—>高级—>环境变量
2.然后编辑Path,全选将其中的路径全部复制出来。新建一个系统变量取名path1,将复制的内容放入其中。
3.然后在Path中建立一个引用。也就是引用path1的路径。
方法:在path中开头或者结尾中放入%path1% 注意前后加;就行
%PCL_ROOT%\bin
%PCL_ROOT%\3rdParty\VTK\bin
%PCL_ROOT%\3rdParty\FLANN\bin
%OPENNI2_REDIST64%
%PCL_ROOT%\3rdParty\Qhull\bin
%PCL_ROOT%\3rdParty\OpenNI2\Tools
%OPENNI2_LIB64%
%OPENNI2_INCLUDE64%
添加环境变量记得需要重启一下电脑生效。可以一直往后继续安装,等到运行demo之前重启一下即可。
拷贝与你安装PCL版本对应的PDB压缩包解压后的PDB文件,到你PCL安装路径下的bin文件夹,我的是在D:\PCL
打开VS,点击创建新项目:
选择空项目:
配置新项目:
选择Debug模式,并将x86改为64位(此处是依托于64位来介绍的),如下图
右键项目PCL1,(注意,是PCL1,而不是上面的解决方案“PCL1”))选择属性,设置项目属性,如下图
点击VC++目录
:
选择VC++目录->包含目录,添加包含目录,共7个
D:\PCL\include\pcl-1.11
D:\PCL\3rdParty\VTK\include\vtk-8.2
D:\PCL\3rdParty\Qhull\include
D:\PCL\3rdParty\OpenNI2\Include
D:\PCL\3rdParty\FLANN\include
D:\PCL\3rdParty\Eigen\eigen3
D:\PCL\3rdParty\Boost\include\boost-1_74
选择VC++属性->库目录,添加库目录,共6个
D:\PCL\3rdParty\VTK\lib
D:\PCL\3rdParty\OpenNI2\Lib
D:\PCL\3rdParty\Boost\lib
D:\PCL\3rdParty\FLANN\lib
D:\PCL\3rdParty\Qhull\lib
D:\PCL\lib
_CRT_SECURE_NO_WARNINGS
_SCL_SECURE_NO_WARNINGS
_SILENCE_FPOS_SEEKPOS_DEPRECATION_WARNING
这个在VS2019中发现没有直接在里面,可以先随便写一个cpp文件,例如我的tetst.cpp
:
点击运行一下。
#include <iostream>
using namespace std;
int main()
{
cout << "Hello, World!";
return 0;
}
然后再打开项目属性就有了C/C++:
在链接器-输入-附加依赖项中添加以下lib文件。
首先是Debug模式下:
添加的目录有,复制粘贴即可(Debug模式下):
%(AdditionalDependencies)
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
vtkChartsCore-8.2-gd.lib
vtkCommonColor-8.2-gd.lib
vtkCommonComputationalGeometry-8.2-gd.lib
vtkCommonCore-8.2-gd.lib
vtkCommonDataModel-8.2-gd.lib
vtkCommonExecutionModel-8.2-gd.lib
vtkCommonMath-8.2-gd.lib
vtkCommonMisc-8.2-gd.lib
vtkCommonSystem-8.2-gd.lib
vtkCommonTransforms-8.2-gd.lib
vtkDICOMParser-8.2-gd.lib
vtkDomainsChemistry-8.2-gd.lib
vtkDomainsChemistryOpenGL2-8.2-gd.lib
vtkdoubleconversion-8.2-gd.lib
vtkexodusII-8.2-gd.lib
vtkexpat-8.2-gd.lib
vtkFiltersAMR-8.2-gd.lib
vtkFiltersCore-8.2-gd.lib
vtkFiltersExtraction-8.2-gd.lib
vtkFiltersFlowPaths-8.2-gd.lib
vtkFiltersGeneral-8.2-gd.lib
vtkFiltersGeneric-8.2-gd.lib
vtkFiltersGeometry-8.2-gd.lib
vtkFiltersHybrid-8.2-gd.lib
vtkFiltersHyperTree-8.2-gd.lib
vtkFiltersImaging-8.2-gd.lib
vtkFiltersModeling-8.2-gd.lib
vtkFiltersParallel-8.2-gd.lib
vtkFiltersParallelImaging-8.2-gd.lib
vtkFiltersPoints-8.2-gd.lib
vtkFiltersProgrammable-8.2-gd.lib
vtkFiltersSelection-8.2-gd.lib
vtkFiltersSMP-8.2-gd.lib
vtkFiltersSources-8.2-gd.lib
vtkFiltersStatistics-8.2-gd.lib
vtkFiltersTexture-8.2-gd.lib
vtkFiltersTopology-8.2-gd.lib
vtkFiltersVerdict-8.2-gd.lib
vtkfreetype-8.2-gd.lib
vtkGeovisCore-8.2-gd.lib
vtkgl2ps-8.2-gd.lib
vtkglew-8.2-gd.lib
vtkGUISupportMFC-8.2-gd.lib
vtkhdf5-8.2-gd.lib
vtkhdf5_hl-8.2-gd.lib
vtkImagingColor-8.2-gd.lib
vtkImagingCore-8.2-gd.lib
vtkImagingFourier-8.2-gd.lib
vtkImagingGeneral-8.2-gd.lib
vtkImagingHybrid-8.2-gd.lib
vtkImagingMath-8.2-gd.lib
vtkImagingMorphological-8.2-gd.lib
vtkImagingSources-8.2-gd.lib
vtkImagingStatistics-8.2-gd.lib
vtkImagingStencil-8.2-gd.lib
vtkInfovisCore-8.2-gd.lib
vtkInfovisLayout-8.2-gd.lib
vtkInteractionImage-8.2-gd.lib
vtkInteractionStyle-8.2-gd.lib
vtkInteractionWidgets-8.2-gd.lib
vtkIOAMR-8.2-gd.lib
vtkIOAsynchronous-8.2-gd.lib
vtkIOCityGML-8.2-gd.lib
vtkIOCore-8.2-gd.lib
vtkIOEnSight-8.2-gd.lib
vtkIOExodus-8.2-gd.lib
vtkIOExport-8.2-gd.lib
vtkIOExportOpenGL2-8.2-gd.lib
vtkIOExportPDF-8.2-gd.lib
vtkIOGeometry-8.2-gd.lib
vtkIOImage-8.2-gd.lib
vtkIOImport-8.2-gd.lib
vtkIOInfovis-8.2-gd.lib
vtkIOLegacy-8.2-gd.lib
vtkIOLSDyna-8.2-gd.lib
vtkIOMINC-8.2-gd.lib
vtkIOMovie-8.2-gd.lib
vtkIONetCDF-8.2-gd.lib
vtkIOParallel-8.2-gd.lib
vtkIOParallelXML-8.2-gd.lib
vtkIOPLY-8.2-gd.lib
vtkIOSegY-8.2-gd.lib
vtkIOSQL-8.2-gd.lib
vtkIOTecplotTable-8.2-gd.lib
vtkIOVeraOut-8.2-gd.lib
vtkIOVideo-8.2-gd.lib
vtkIOXML-8.2-gd.lib
vtkIOXMLParser-8.2-gd.lib
vtkjpeg-8.2-gd.lib
vtkjsoncpp-8.2-gd.lib
vtklibharu-8.2-gd.lib
vtklibxml2-8.2-gd.lib
vtklz4-8.2-gd.lib
vtklzma-8.2-gd.lib
vtkmetaio-8.2-gd.lib
vtkNetCDF-8.2-gd.lib
vtkogg-8.2-gd.lib
vtkParallelCore-8.2-gd.lib
vtkpng-8.2-gd.lib
vtkproj-8.2-gd.lib
vtkpugixml-8.2-gd.lib
vtkRenderingAnnotation-8.2-gd.lib
vtkRenderingContext2D-8.2-gd.lib
vtkRenderingContextOpenGL2-8.2-gd.lib
vtkRenderingCore-8.2-gd.lib
vtkRenderingExternal-8.2-gd.lib
vtkRenderingFreeType-8.2-gd.lib
vtkRenderingGL2PSOpenGL2-8.2-gd.lib
vtkRenderingImage-8.2-gd.lib
vtkRenderingLabel-8.2-gd.lib
vtkRenderingLOD-8.2-gd.lib
vtkRenderingOpenGL2-8.2-gd.lib
vtkRenderingVolume-8.2-gd.lib
vtkRenderingVolumeOpenGL2-8.2-gd.lib
vtksqlite-8.2-gd.lib
vtksys-8.2-gd.lib
vtktheora-8.2-gd.lib
vtktiff-8.2-gd.lib
vtkverdict-8.2-gd.lib
vtkViewsContext2D-8.2-gd.lib
vtkViewsCore-8.2-gd.lib
vtkViewsInfovis-8.2-gd.lib
vtkzlib-8.2-gd.lib
rabbit.pcb
百度云链接:https://pan.baidu.com/s/1Z1kbVI_09KW4TyYRZFc8PQ
提取码:iusc
在源文件在新建一个cpp文件,把下列代码复制进去,把rabbit.pcb和源cpp文件放在同一路径下,如下图。
#include<iostream>
#include<pcl/io/io.h>
#include<pcl/io/pcd_io.h>
#include<pcl/io/ply_io.h>
#include<pcl/visualization/cloud_viewer.h>
int user_data;
using std::cout;
void viewerOneOff(pcl::visualization::PCLVisualizer& viewer) {
viewer.setBackgroundColor(1.0, 0.5, 1.0); //设置背景颜色
}
int main() {
pcl::PointCloud<pcl::PointXYZ>::Ptr cloud(new pcl::PointCloud<pcl::PointXYZ>);
char strfilepath[256] = "rabbit.pcd";
if (-1 == pcl::io::loadPCDFile(strfilepath, *cloud)) {
cout << "error input!" << endl;
return -1;
}
cout << cloud->points.size() << endl;
pcl::visualization::CloudViewer viewer("Cloud Viewer"); //创建viewer对象
viewer.showCloud(cloud);
viewer.runOnVisualizationThreadOnce(viewerOneOff);
system("pause");
return 0;
}
运行出这个结果说明已经大功告成!