【PCL】PCL1.15.0 环境安装配置流程记录

【PCL】PCL1.15.0 环境安装配置流程记录

Windows11 + vs2022 + pcl1.15.0

通过网盘分享的文件:PCL1.15.0配置相关文件
链接: https://pan.baidu.com/s/1mWn0UK8RiGFBdS1A4pZADg 提取码: qmsq

希望可以帮助到更多的人~

1. Visual Studio 安装

下载链接:https://visualstudio.microsoft.com/zh-hans/downloads/

正常安装即可,安装 vs2022 过程中记得勾选使用C++的桌面开发WinUi应用程序开发

image-20250627104421969

2. PCL 安装

PCL相关安装包下载路径:https://github.com/PointCloudLibrary/pcl/releases,最新版1.15.0

image-20250627193452627

2.1. PCL-1.15.0-AlllnOne 安装注意事项

  • 安装路径自定义
  • 建议勾选添加环境变量
    image-20250627193943507
  • 安装组件选择 PCL 和 3rd Party
    image-20250627193859401

2.2. PCL-1.15.0-pdb-msvc2022 安装注意事项

下载 —> 解压 —> 移至 PCL1.15.0/bin 目录中

3. OpenNI2 安装

进入 E:\PCL\PCL 1.15.0\3rdParty\OpenNI2 目录中,执行如下文件:

image-20250627194919273

如果已经安装过请点击 remove 移除后再下载

image-20250627195014366

4. 环境变量配置

4.1. PCL 环境变量

系统环境变量 path 下添加,根据PCL安装目录修改:

E:\PCL\PCL 1.15.0\bin
E:\PCL\PCL 1.15.0\3rdParty\VTK\bin
E:\PCL\PCL 1.15.0\3rdParty\FLANN\bin
E:\PCL\PCL 1.15.0\3rdParty\Qhull\bin
E:\PCL\PCL 1.15.0\3rdParty\OpenNI2\Tools
E:\PCL\PCL 1.15.0\3rdParty\OpenNI2\Redist
E:\PCL\PCL 1.15.0\3rdParty\OpenNI2\Include
E:\PCL\PCL 1.15.0\3rdParty\OpenNI2\Lib

5. PCL 项目配置

5.1. 新建项目

image-20250627195413987

5.2. ReleaseX64 属性配置

第一步:点击属性管理视图,若无属性管理视图,在cs左上方视图中打开

image-20250627195952956

第二步:添加Release X64新项目属性表

image-20250627200139395

image-20250627200225698

第三步:SDL检查设置为否

image-20250627200450905

第四步:配置通用属性 VC++目录 -> 包含目录

image-20250627200929546

点击编辑后找到一下对应目录,逐个添加进去

E:\PCL\PCL 1.15.0\include\pcl-1.15
E:\PCL\PCL 1.15.0\3rdParty\Boost\include\boost-1_87
E:\PCL\PCL 1.15.0\3rdParty\Eigen3\include\eigen3
E:\PCL\PCL 1.15.0\3rdParty\Eigen3\include\eigen3\Eigen
E:\PCL\PCL 1.15.0\3rdParty\Eigen3\include\eigen3\unsupported
E:\PCL\PCL 1.15.0\3rdParty\Eigen3\include\eigen3\unsupported\Eigen
E:\PCL\PCL 1.15.0\3rdParty\FLANN\include
E:\PCL\PCL 1.15.0\3rdParty\FLANN\include\flann
E:\PCL\PCL 1.15.0\3rdParty\OpenNI2\Include
E:\PCL\PCL 1.15.0\3rdParty\Qhull\include
E:\PCL\PCL 1.15.0\3rdParty\Qhull\include\libqhull
E:\PCL\PCL 1.15.0\3rdParty\Qhull\include\libqhull_r
E:\PCL\PCL 1.15.0\3rdParty\Qhull\include\libqhullcpp
E:\PCL\PCL 1.15.0\3rdParty\VTK\include
E:\PCL\PCL 1.15.0\3rdParty\VTK\include\vtk-9.4

第五步:配置通用属性 VC++目录 -> 库目录

image-20250627201044362

同样,点击编辑后找到一下对应目录,逐个添加进去

E:\PCL\PCL 1.15.0\lib
E:\PCL\PCL 1.15.0\3rdParty\Boost\lib
E:\PCL\PCL 1.15.0\3rdParty\FLANN\lib
E:\PCL\PCL 1.15.0\3rdParty\OpenNI2\Lib
E:\PCL\PCL 1.15.0\3rdParty\Qhull\lib
E:\PCL\PCL 1.15.0\3rdParty\VTK\lib

第六步:其他配置

  1. 符合模式:

image-20250627201403065

  1. 预处理器定义:

    BOOST_USE_WINDOWS_H
    NOMINMAX
    _CRT_SECURE_NO_DEPRECATE
    

    image-20250627201434691

    image-20250627201524746

  2. 增强指令集

    image-20250627201651317

第七步:连接器 -> 输入 -> 附加依赖项

image-20250627201833509

此处内容参考百度网盘链接中对应文件的内容,以下两个连接器文本中的内容均需添加。此处需注意各版本包含的内容不同,对于release版本可直接通过以下指令在对应的文件夹中生成所需的内容:

cd \e E:\PCL\PCL1.15.0\lib    进入到对应lib目录下
dir/b *d.lib >release.txt   release使用的d.lib后缀名字写到release.txt中
同样的再进入 E:\PCL\PCL 1.15.0\3rdParty\VTK\lib 目录下执行第二行命令,最后将两个生成的文本中的内容都添加到附加依赖项中即可

image-20250627201908783

第八步:保存属性

image-20250627202609432

5.3. DebugX64 属性配置

与5.2. ReleaseX64 属性配置步骤一样,在Debug | x64处新添加属性,然后进行同样的配置。

不同之处在于第七步 连接器 -> 输入 -> 附加依赖项,此处参考百度网盘中的文件,找出于release版本不同的地方删掉即可(注意不同版本整体内容可能不同)

image-20250627202751737

5.4. 项目属性配置

第一步:进入项目属性配置页

image-20250627202932986

第二步:进入编辑

image-20250627203052369

第三步:添加内容

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)

6. 测试

第一步:在源文件中添加项

image-20250627203208016

第二步:添加内容

#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);
}

出现以下界面即代表配置成功

image-20250627203446987

7. 遇见的问题

PCL\ip\low_level_io.h(x.x):error …: “_read”: 不是“global namespace” 的成员
“_read”: 找不到标识符

类似的解决方案:
在头文件中添加,添加在#include <pcl/io/pcd_io.h>前面

#include <corecrt_io.h> // 在前面添加
#include <pcl/io/pcd_io.h>

然后在文件系统里搜索corecrt_io.h,将其目录添加到项目包含目录中

image-20250627205349188

image-20250627205439298

8. 参考内容

win+vs2022+pcl 1.13.0 all in one 安装

超详细保姆级PCL1.14.0 安装配置流程

Windows环境下pcl点云库 安装配置全流程(精简、有效)

pcl使用io类的.h文件时报错的解决方案

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值