当前位置: 首页 > news >正文

visual studio2022 配置 PCL 1.13.1

PCL库下载

下载链接: https://github.com/PointCloudLibrary/pcl/releases
下载这两个。
在这里插入图片描述

PCL库安装

运行.exe文件进行安装。
环境变量勾第二个(其实无所谓,反正还要添加别的环境变量,这里没选之后加也一样)。
安装路径自定义,我喜欢装在D盘。
3rd组件勾一下,除非你自己配置好了所需库就不用勾。
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

PCL库安装完成后,双击这个.msi文件装一下OpenNI2,最开始里面只有这个.msi文件,安装路径就选择这个OpenNI2路径,安装完成后就会多出下面这些文件。
在这里插入图片描述
这一步完成后,将最开始下载的.zip文件解压,把里面所有.pdb文件复制到PCL里的bin目录下。
在这里插入图片描述
在这里插入图片描述

最后配置系统环境变量。如果PCL安装时没加环境变量这里顺带加一下就行。
在这里插入图片描述

D:\PCL\bin
D:\PCL\3rdParty\VTK\bin
D:\PCL\3rdParty\FLANN\bin
%OPENNI2_REDIST64%
%OPENNI2_LIB64%
%OPENNI2_INCLUDE64%

visual studio环境配置

环境

在这里插入图片描述

PATH=D:\PCL\\bin;D:\PCL\\3rdParty\FLANN\bin;D:\PCL\\3rdParty\VTK\bin;D:\PCL\\3rdParty\OpenNI2\Tools

包含目录和库目录

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

附加依赖项

在这里插入图片描述

附加依赖项里面添加的是PCL\lib和PCL\3rdParty\VTK\lib里面的.lib文件名。
这里需要改debug模式还是release模式,debug模式加带d的.lib文件,release模式加不带d的.lib文件。

在这里插入图片描述
在这里插入图片描述
可以使用如下方法快速提取出里面的文件名
在这里输入cmd回车,会进到终端并定位到该路径。
在这里插入图片描述

第一行取出所有带d的.lib文件名写入1.txt,填入debug模式。
第二行取出所有不带d的.lib文件名写入2.txt,填入release模式。
在这里插入图片描述
PCL\3rdParty\VTK\lib目录下同样操作。

测试

以下面这段代码为例

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

release模式

把刚刚两个目录下的2.txt里面的所有文件名复制过来。
在这里插入图片描述
在这里插入图片描述
运行结果如下
在这里插入图片描述

debug模式

把刚刚两个目录下的1.txt里面的所有文件名复制过来,其实有更简洁的写法,如下
在这里插入图片描述
运行结果如下
在这里插入图片描述

http://www.dtcms.com/a/352760.html

相关文章:

  • SwiftUI 三阵诀:杨过绝情谷悟 “视图布阵” 之道
  • 阿里云——计算服务深度解析与选型
  • 非容器数据库(non-CDB)迁移为可插拔数据库(PDB)步骤
  • GPIO推挽和开漏的名称由来和本质含义
  • 数学建模模型
  • 【Linux】Docker洞察:掌握docker inspect命令与Go模板技巧
  • Oracle中快速排查存储过程问题
  • LeetCode - 739. 每日温度
  • 《金融对账系统雪崩隐患的深度复盘与架构重生》
  • 数据库服务-日志管理-备份与恢复-主从同步
  • 项目经验处理
  • 获取服务器指标的信息
  • 幂等性设计艺术:在分布式重试风暴中构筑坚不可摧的防线
  • 大批量查询数据库大字段导致OOM问题
  • TCP服务端并发模型
  • 第5章 Excel公式与函数应用指南(4):日期和时间函数
  • Paimon——官网阅读:主键表
  • 计算神经科学数学建模编程深度前沿方向研究(下)
  • 【C++】类型系统:内置类型与自定义类型的对比
  • super(msg)层层上抛
  • 数据结构青铜到王者第七话---队列(Queue)
  • 基于Spring Boot的考研辅导知识共享平台-项目分享
  • Node.js 多版本管理工具 nvm 的安装与使用教程(含镜像加速与常见坑)
  • 计算机组成原理实验报告
  • Kafka架构以及组件讲解
  • 【Kafka】重点概念和架构总结
  • Unity 串口通信
  • 解开 Ansible 任务复用谜题:过滤器用法、Include/Import 本质差异与任务文件价值详解
  • Writer-你的私人内容创作助手
  • TCP并发服务器构建