参考
Windows环境下pcl点云库 安装配置全流程(精简、有效)
环境
Windows 10,vs2022,pcl1.13.0
一、下载
选择自己合适的版本进行下载,下载allinone和pdb
下载连接:https://github.com/PointCloudLibrary/pcl/releases
二、安装及配置变量
安装:
点击下载的PCL-1.13.0-AllInOne-msvc2022-win64.exe进行安装
- 选择Add PCL to the system PATH for all users,这样它就会在安装过程中将环境变量写入电脑。
- 选择安装目录
- 组件界面选择全部组件,确保“3rdParty”组件被勾选,以包含所有必要的第三方库
- 一路next
- 如果有窗口有路径太长的错误提示,点击确定没关系的,但就需要手动添加环境变量了
安装程序结束后,PCL安装目录包含Boost、Eigen、FLANN、OpenNI2、Qhull和VTK六个文件夹。
注意:看一下PCL 1.13.0\3rdParty\OpenNI2里是否有文件
- 没有的话到C盘的Program File下或者Program File(x86)下找一下,将内容拷贝到PCL 1.13.0\3rdParty文件夹下
pdb文件:
将pcl-1.13.0-pdb-msvc2022-win64.zip文件解压缩,将pdb文件全部复制到PCL安装目录下的bin文件夹中。
环境变量:安装完毕之后去系统环境变量中检查是否配置上了环境变量。
- 如果没有,自动配置完成,可以自己进行添加
三、VS2019配置
1. 获取所需的lib文件名
分别在
- PCL1.13.0\3rdParty\OpenNI2\Lib
- PCL1.13.0\lib
- PCL1.13.0\3rdParty\VTK\lib;
三个文件夹下创建一个txt文件。
- 如果使用release版本,txt文件中就写dir /b *.lib >release.txt,
- 如果使用debug版本,txt文件中就写dir /b *d.lib >debug.txt,
然后改成bat文件,双击获得一个release.txt或者debug.txt文件,这样就可以把当前目录所有的lib文件名都写在txt文档中了,否则要一个一个输入进去,非常的麻烦。
debug版本下的lib文件名:
OpenNI2.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
vtkcgns-9.2-gd.lib
vtkChartsCore-9.2-gd.lib
vtkCommonColor-9.2-gd.lib
vtkCommonComputationalGeometry-9.2-gd.lib
vtkCommonCore-9.2-gd.lib
vtkCommonDataModel-9.2-gd.lib
vtkCommonExecutionModel-9.2-gd.lib
vtkCommonMath-9.2-gd.lib
vtkCommonMisc-9.2-gd.lib
vtkCommonSystem-9.2-gd.lib
vtkCommonTransforms-9.2-gd.lib
vtkDICOMParser-9.2-gd.lib
vtkDomainsChemistry-9.2-gd.lib
vtkDomainsChemistryOpenGL2-9.2-gd.lib
vtkdoubleconversion-9.2-gd.lib
vtkexodusII-9.2-gd.lib
vtkexpat-9.2-gd.lib
vtkFiltersAMR-9.2-gd.lib
vtkFiltersCore-9.2-gd.lib
vtkFiltersExtraction-9.2-gd.lib
vtkFiltersFlowPaths-9.2-gd.lib
vtkFiltersGeneral-9.2-gd.lib
vtkFiltersGeneric-9.2-gd.lib
vtkFiltersGeometry-9.2-gd.lib
vtkFiltersHybrid-9.2-gd.lib
vtkFiltersHyperTree-9.2-gd.lib
vtkFiltersImaging-9.2-gd.lib
vtkFiltersModeling-9.2-gd.lib
vtkFiltersParallel-9.2-gd.lib
vtkFiltersParallelImaging-9.2-gd.lib
vtkFiltersPoints-9.2-gd.lib
vtkFiltersProgrammable-9.2-gd.lib
vtkFiltersSelection-9.2-gd.lib
vtkFiltersSMP-9.2-gd.lib
vtkFiltersSources-9.2-gd.lib
vtkFiltersStatistics-9.2-gd.lib
vtkFiltersTexture-9.2-gd.lib
vtkFiltersTopology-9.2-gd.lib
vtkFiltersVerdict-9.2-gd.lib
vtkfmt-9.2-gd.lib
vtkfreetype-9.2-gd.lib
vtkGeovisCore-9.2-gd.lib
vtkgl2ps-9.2-gd.lib
vtkglew-9.2-gd.lib
vtkhdf5-9.2-gd.lib
vtkhdf5_hl-9.2-gd.lib
vtkImagingColor-9.2-gd.lib
vtkImagingCore-9.2-gd.lib
vtkImagingFourier-9.2-gd.lib
vtkImagingGeneral-9.2-gd.lib
vtkImagingHybrid-9.2-gd.lib
vtkImagingMath-9.2-gd.lib
vtkImagingMorphological-9.2-gd.lib
vtkImagingSources-9.2-gd.lib
vtkImagingStatistics-9.2-gd.lib
vtkImagingStencil-9.2-gd.lib
vtkInfovisCore-9.2-gd.lib
vtkInfovisLayout-9.2-gd.lib
vtkInteractionImage-9.2-gd.lib
vtkInteractionStyle-9.2-gd.lib
vtkInteractionWidgets-9.2-gd.lib
vtkIOAMR-9.2-gd.lib
vtkIOAsynchronous-9.2-gd.lib
vtkIOCesium3DTiles-9.2-gd.lib
vtkIOCGNSReader-9.2-gd.lib
vtkIOChemistry-9.2-gd.lib
vtkIOCityGML-9.2-gd.lib
vtkIOCONVERGECFD-9.2-gd.lib
vtkIOCore-9.2-gd.lib
vtkIOEnSight-9.2-gd.lib
vtkIOExodus-9.2-gd.lib
vtkIOExport-9.2-gd.lib
vtkIOExportGL2PS-9.2-gd.lib
vtkIOExportPDF-9.2-gd.lib
vtkIOGeometry-9.2-gd.lib
vtkIOHDF-9.2-gd.lib
vtkIOImage-9.2-gd.lib
vtkIOImport-9.2-gd.lib
vtkIOInfovis-9.2-gd.lib
vtkIOIOSS-9.2-gd.lib
vtkIOLegacy-9.2-gd.lib
vtkIOLSDyna-9.2-gd.lib
vtkIOMINC-9.2-gd.lib
vtkIOMotionFX-9.2-gd.lib
vtkIOMovie-9.2-gd.lib
vtkIONetCDF-9.2-gd.lib
vtkIOOggTheora-9.2-gd.lib
vtkIOParallel-9.2-gd.lib
vtkIOParallelXML-9.2-gd.lib
vtkIOPLY-9.2-gd.lib
vtkIOSegY-9.2-gd.lib
vtkIOSQL-9.2-gd.lib
vtkioss-9.2-gd.lib
vtkIOTecplotTable-9.2-gd.lib
vtkIOVeraOut-9.2-gd.lib
vtkIOVideo-9.2-gd.lib
vtkIOXML-9.2-gd.lib
vtkIOXMLParser-9.2-gd.lib
vtkjpeg-9.2-gd.lib
vtkjsoncpp-9.2-gd.lib
vtkkissfft-9.2-gd.lib
vtklibharu-9.2-gd.lib
vtklibproj-9.2-gd.lib
vtklibxml2-9.2-gd.lib
vtkloguru-9.2-gd.lib
vtklz4-9.2-gd.lib
vtklzma-9.2-gd.lib
vtkmetaio-9.2-gd.lib
vtknetcdf-9.2-gd.lib
vtkogg-9.2-gd.lib
vtkParallelCore-9.2-gd.lib
vtkParallelDIY-9.2-gd.lib
vtkpng-9.2-gd.lib
vtkpugixml-9.2-gd.lib
vtkRenderingAnnotation-9.2-gd.lib
vtkRenderingContext2D-9.2-gd.lib
vtkRenderingContextOpenGL2-9.2-gd.lib
vtkRenderingCore-9.2-gd.lib
vtkRenderingFreeType-9.2-gd.lib
vtkRenderingGL2PSOpenGL2-9.2-gd.lib
vtkRenderingHyperTreeGrid-9.2-gd.lib
vtkRenderingImage-9.2-gd.lib
vtkRenderingLabel-9.2-gd.lib
vtkRenderingLICOpenGL2-9.2-gd.lib
vtkRenderingLOD-9.2-gd.lib
vtkRenderingOpenGL2-9.2-gd.lib
vtkRenderingSceneGraph-9.2-gd.lib
vtkRenderingUI-9.2-gd.lib
vtkRenderingVolume-9.2-gd.lib
vtkRenderingVolumeOpenGL2-9.2-gd.lib
vtkRenderingVtkJS-9.2-gd.lib
vtksqlite-9.2-gd.lib
vtksys-9.2-gd.lib
vtkTestingRendering-9.2-gd.lib
vtktheora-9.2-gd.lib
vtktiff-9.2-gd.lib
vtkverdict-9.2-gd.lib
vtkViewsContext2D-9.2-gd.lib
vtkViewsCore-9.2-gd.lib
vtkViewsInfovis-9.2-gd.lib
vtkWrappingTools-9.2-gd.lib
vtkzlib-9.2-gd.lib
2.VS2019配置
配置包含目录:VC++目录——包含目录
- E:\PCL 1.13.0\include\pcl-1.13
- E:\PCL 1.13.0\3rdParty\Boost\include\boost-1_80
- E:\PCL 1.13.0\3rdParty\Eigen\eigen3
- E:\PCL 1.13.0\3rdParty\FLANN\include
- E:\PCL 1.13.0\3rdParty\Qhull\include
- E:\PCL 1.13.0\3rdParty\OpenNI2\Include
- E:\PCL 1.13.0\3rdParty\VTK\include\vtk-9.2
配置库目录:VC++目录——库目录
- E:\PCL 1.13.0\lib
- E:\PCL 1.13.0\3rdParty\Boost\lib
- E:\PCL 1.13.0\3rdParty\FLANN\lib
- E:\PCL 1.13.0\3rdParty\OpenNI2\Lib
- E:\PCL 1.13.0\3rdParty\Qhull\lib
- E:\PCL 1.13.0\3rdParty\VTK\lib
配置第三方库:链接器——输入。第一步获取的lib文件名
配置预处理器:C/C+±——预处理器
- 预处理器定义:添加_CRT_SECURE_NO_WARNINGS
四、测试程序
不需要额外准备pcl文件,制作柱形点云集
#include <iostream>
#include <pcl/common/common_headers.h>
#include <pcl/io/pcd_io.h>
#include <pcl/visualization/pcl_visualizer.h>
#include <pcl/visualization/cloud_viewer.h>
#include <pcl/console/parse.h>
using namespace std;
int main(int argc, char** argv) { //柱型点云测试
cout << "Test PCL !" << endl;
pcl::PointCloud<pcl::PointXYZRGB>::Ptr point_cloud_ptr(new pcl::PointCloud<pcl::PointXYZRGB>);
uint8_t r(255), g(15), b(15);
for (float z(-1.0); z <= 1.0; z += 0.05) { //制作柱型点云集
for (float angle(0.0); angle <= 360.0; angle += 5.0) {
pcl::PointXYZRGB point;
point.x = cos(pcl::deg2rad(angle));
point.y = sin(pcl::deg2rad(angle));
point.z = z;
uint32_t rgb = (static_cast<uint32_t>(r) << 16 | static_cast<uint32_t>(g) << 8 | static_cast<uint32_t>(b));
point.rgb = *reinterpret_cast<float*>(&rgb);
point_cloud_ptr->points.push_back(point);
}
if (z < 0.0) { //颜色渐变
r -= 12;
g += 12;
}
else {
g -= 12;
b += 12;
}
}
point_cloud_ptr->width = (int)point_cloud_ptr->points.size();
point_cloud_ptr->height = 1;
pcl::visualization::CloudViewer viewer("pcl—test测试");
viewer.showCloud(point_cloud_ptr);
while (!viewer.wasStopped()) {};
return 0;
}
五、可能出现的问题
1.变量名不安全C4996
C++ 解决error C4996: ‘_open‘: This function or variable may be unsafe. Consider using _sopen_s instead
错误信息:error C4996: ‘_open‘: This function or variable may be unsafe. Consider using _sopen_s instead
解决方案:
- 将你所用的这个变量或者名称的名字按照要求改成定义里面的
- 直接简单暴力的屏蔽掉安全警告:项目->属性->c/c+±>预处理器->预处理器定义,添加_CRT_SECURE_NO_WARNINGS
2.找不到dll文件
找不到vtkCommoncore-8.2.dll,vtkImagingSources.dll问题的解决方法
【C++】由于找不到xxx.dll,无法继续执行代码,重新安装程序可能会解决此问题。(解决办法)
错误信息:报错找不到vtkCommoncore-9.2.dll
原因分析:
- 环境变量没设置好
- 环境变量没问题,但是代码未找到依赖
解决方案1:
- 项目——属性——调试——环境——编辑
- PATH=E:\PCL 1.13.0\3rdParty\VTK\bin;E:\PCL 1.13.0\bin;E:\PCL 1.13.0\3rdParty\OpenNI2\Redist;&(LocalDebuggerEnvironment)
解决方案2:dll文件少时可以使用
- 找到对应的dll文件
- 打开你的系统路径C:\Windows\System32(必须是System32文件夹),将刚才复制的DLL文件粘贴到文件夹中即可。