Windows 安装 PCL

参考

PCL安装(C++)并配置vs

3D点云学习笔记(PCL安装及配置)

Windows下安装点云处理库PCL

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

解决方案:

  1. 将你所用的这个变量或者名称的名字按照要求改成定义里面的
  2. 直接简单暴力的屏蔽掉安全警告:项目->属性->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文件粘贴到文件夹中即可。
### Windows平台上安装PCL点云库 对于Windows平台下的PCL点云库安装,建议访问PCL的官方网站(https://pointclouds.org/)下载最新版本的PCL点云库[^1]。选择与操作系统相匹配的二进制发行版进行下载。下载完成后,将其解压缩到指定目录。 考虑到网络速度问题,截至2024年12月,PCL版本已更新至PCL 1.14.1。如果官方下载速度过慢,可以考虑通过提供的百度网盘链接获取所需版本,注意输入正确的提取码qxze以完成下载[^2]。网盘内提供了从PCL 1.8.0到最新的PCL 1.14.1多个版本供选择,并附有各版本对应的Visual Studio兼容列表以便用户根据自身环境挑选合适版本。 #### 安装步骤概览 - 访问官网或使用备用链接下载适合操作系统的预编译二进制包。 - 将下载好的压缩文件解压到目标位置。 - 设置必要的环境变量,确保命令行工具能够识别PCL路径。 - 如果计划开发C++项目,则需配置IDE(如Visual Studio),使其能正确引用PCL头文件和库文件。 ```cpp // 示例:简单的PCL程序验证安装是否成功 #include <pcl/io/pcd_io.h> #include <pcl/point_types.h> int main(int argc, char** argv) { pcl::PointCloud<pcl::PointXYZ>::Ptr cloud(new pcl::PointCloud<pcl::PointXYZ>); // 填充一些测试数据... for (size_t i = 0; i < 5; ++i){ pcl::PointXYZ point; point.x = static_cast<float>(rand()) / RAND_MAX * 10.0f; point.y = static_cast<float>(rand()) / RAND_MAX * 10.0f; point.z = static_cast<float>(rand()) / RAND_MAX * 10.0f; cloud->points.push_back(point); } cloud->width = cloud->points.size(); cloud->height = 1; if(pcl::io::savePCDFileASCII ("test_pcd.pcd", *cloud) == -1){ //* write *.pcd file */ PCL_ERROR ("Failed to save pcd file.\n"); }else { std::cerr << "Saved " << cloud->points.size () << " data points to test_pcd.pcd."<< std::endl; } } ``` 此代码片段展示了如何创建并保存一个包含随机生成坐标的简单点云集为`.pcd`格式文件,可用于检验本地环境中PCL库的功能正常与否。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值