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

PCL入门(二):初识点云数据

目录

        • 1. 点云数据
        • 2. 对点云数据的简单操作
        • 3. 结果

1. 点云数据

在pcl里面,定义了很多点云数据类型,比如PointXYZ、PointXYZI、PointXYZRGBA等等,每一个都可以看做是点云的一个点的数据。而整个点云的数据类型被定义为PointCloud。

pcl::PointCloud<pcl::PointXYZ> = cloud为例,cloud为一个点云对象,其中包含很多点云数据,数据类型为pcl::PointXYZ。具体参考博客《【点云处理技术之PCL】PCL中的基本数据类型——PointCloud与PointT》和官网点云介绍。

2. 对点云数据的简单操作

参考双愚的代码,用rand函数生成几个PointXYZ格式的点云数据,将包含这些数据的点云保存为.pcd格式的点云数据文件。

  • pcl01.cpp
#include <iostream>
#include <pcl/io/pcd_io.h>
#include <pcl/point_types.h>int main()
{//第一部分:定义点云对象,其中的数据类型为PointXYZpcl::PointCloud<pcl::PointXYZ> cloud;//第二部分:对点云对象cloud赋值,包括width、height、is_dense等参数赋值,给出点云中数据的定量描述//然后对points进行resize,对具体的数据vector初始化其中包含width*height个cloud.width = 5;cloud.height = 1;cloud.is_dense = false;cloud.points.resize(cloud.width * cloud.height);//第三部分:对cloud的points vector进行赋值for (auto &point : cloud){point.x = 1024 * rand() / (RAND_MAX + 1.0f);point.y = 1024 * rand() / (RAND_MAX + 1.0f);point.z = 1024 * rand() / (RAND_MAX + 1.0f);}//第四部分:对cloud的points vector进行逐个point的输出,并将cloud保存为.pcd格式点云文件pcl::io::savePCDFileASCII("test_pcd.pcd", cloud);std::cerr << "saved " << cloud.size() << " data points to test_pcd.pcd" << std::endl;for (const auto &point : cloud){std::cerr << "  " << point.x << " " << point.y << " " << point.z << std::endl;}return 0;}
  • CMakeLists.txt
cmake_minimum_required(VERSION 2.8 FATAL_ERROR)project(pcd01)find_package(PCL)add_executable(pcl01 pcl01.cpp) # 将cpp文件编译生成可执行文件target_link_libraries(pcl01 ${PCL_LIBRARIES}) # cpp文件中仅提供了pcl的.h头文件,具体实现需要库文件,这里将库文件链接到可执行文件中

3. 结果

在这里插入图片描述

相关文章:

PCL入门(二):初识点云数据

目录 1. 点云数据2. 对点云数据的简单操作3. 结果 1. 点云数据 在pcl里面&#xff0c;定义了很多点云数据类型&#xff0c;比如PointXYZ、PointXYZI、PointXYZRGBA等等&#xff0c;每一个都可以看做是点云的一个点的数据。而整个点云的数据类型被定义为PointCloud。 以pcl::P…...

LeetCode 面试题 03.01. 三合一

文章目录 一、题目二、C# 题解 一、题目 三合一。描述如何只用一个数组来实现三个栈。 你应该实现push(stackNum, value)、pop(stackNum)、isEmpty(stackNum)、peek(stackNum)方法。stackNum表示栈下标&#xff0c;value表示压入的值。 构造函数会传入一个stackSize参数&#x…...

【WebSocketIndexedDB】node+WebSocketIndexedDB开发简易聊天室

序幕介绍&#xff1a; WebSocket 是 HTML5 开始提供的一种在单个 TCP 连接上进行全双工通讯的协议。 讲人话就是说&#xff1a;WebSocket 使得客户端和服务器之间的数据交换变得更加简单&#xff0c;在 WebSocket API 中&#xff0c;浏览器和服务器只需要完成一次握手&#x…...

【01】弄懂共识机制PoW

基于工作量证明机制的共识机制PoW&#xff08;Proof of Work&#xff09; 特点就是多劳多特 共识过程 一个区块链系统中&#xff0c;交易历经多个步骤才能得以上链&#xff0c;并且需要经过多个节点的验证。以下是这些步骤的详细叙述&#xff1a; 交易进入交易池&#xff08;内…...

QT C++ 基于TCP通信的网络聊天室

一、基本原理及流程 1&#xff09;知识回顾&#xff08;C语言中的TCP流程&#xff09; 2&#xff09;QT中的服务器端/客户端的操作流程 二、代码实现 1&#xff09;服务器 .ui .pro 在pro文件中添加network库 .h #ifndef WIDGET_H #define WIDGET_H#include <QWidget>…...

SpringMVC入门详细介绍

一. SpringMVC简介 Spring MVC是一个基于Java的实现了MVC设计模式的请求驱动类型的轻量级Web框架&#xff0c;通过把Model&#xff0c;View&#xff0c;Controller分离&#xff0c;将web层进行职责解耦&#xff0c;把复杂的web应用分成逻辑清晰的几部分&#xff0c;简化开发&a…...

R3LIVE源码解析(9) — R3LIVE中r3live_lio.cpp文件

目录 1 r3live_lio.cpp文件简介 2 r3live_lio.cpp源码解析 1 r3live_lio.cpp文件简介 在r3live.cpp文件中创建LIO线程后&#xff0c;R3LIVE中的LIO线程本质上整体流程和FAST-LIO2基本一致。 2 r3live_lio.cpp源码解析 函数最开始会进行一系列的声明和定义&#xff0c;发布的…...

如何高效的解析Json?

Json介绍 Json是一种数据格式&#xff0c;广泛应用在需要数据交互的场景Json由键值对组成每一个键值对的key是字符串类型每一个键值对的value是值类型(boo1值数字值字符串值)Array类型object类型Json灵活性他可以不断嵌套&#xff0c;数组的每个元素还可以是数组或者键值对键值…...

MySQL——分组查询

2023.9.4 MySQL 分组查询的学习笔记如下&#xff1a; #分组查询 /* 分组查询中的筛选条件分为两类&#xff1a;数据源 位置 关键字 分组前筛选 原始表 group by前面 where 分组后筛选 分组后的结果集 group by后面 having */ #查询每…...

thinkphp 使用 easypay 和 easywechat

easypay 是3.x easywechat 是6.x 引入&#xff1a; use Yansongda\Pay\Pay;//easypayuse EasyWeChat\MiniApp\Application as MiniApp;//easywechat use EasyWeChat\Pay\Application as Payapp;//easywechat public function suborder(){$order [out_trade_no > time(…...

无涯教程-JavaScript - DVARP函数

描述 DVARP函数通过使用列表或数据库中符合您指定条件的记录的字段(列)中的数字,基于整个总体计算总体的方差。 语法 DVARP (database, field, criteria)争论 Argument描述Required/Optionaldatabase 组成列表或数据库的单元格范围。 数据库是相关数据的列表,其中相关信息的…...

Databend 开源周报第 108 期

Databend 是一款现代云数仓。专为弹性和高效设计&#xff0c;为您的大规模分析需求保驾护航。自由且开源。即刻体验云服务&#xff1a;https://app.databend.cn 。 Whats On In Databend 探索 Databend 本周新进展&#xff0c;遇到更贴近你心意的 Databend 。 多源数据目录 …...

Android-Intent实现数据传递

在activityA中使用putExtras(bundle)传递数据&#xff0c;在activityB中使用getExtras()获取数据 MainActivity.java及其xml package com.example.intentactivity;import androidx.appcompat.app.AppCompatActivity;import android.content.ComponentName; import android.co…...

系统学习Linux-zabbix监控平台

一、zabbix的基本概述 zabbix是一个监控软件&#xff0c;其可以监控各种网络参数&#xff0c;保证企业服务架构安全运营&#xff0c;同时支持灵活的告警机制&#xff0c;可以使得运维人员快速定位故障、解决问题。zabbix支持分布式功能&#xff0c;支持复杂架构下的监控解决方…...

基于MediaPipe的人体摔倒检测

1 简介 1.1 研究背景及意义 现如今随着经济等各方面飞速发展&#xff0c;社会安全随之也成为必不可少的话题。而校园安全则是社会安全的重中之重&#xff0c;而在我们的校园中&#xff0c;湿滑的地面、楼梯等位置通常会发生摔倒&#xff0c;尽管有“小心脚下”的告示牌&#xf…...

WebDAV之π-Disk派盘 + 无忧日记

无忧日记,生活无忧无虑。 给用户专业的手机记录工具,用户可以很轻松地通过软件进行每天发生事情的记录,可以为用户提供优质的工具与帮助,用户还可以通过软件来将地理位置,天气都记录在日记上,用户也可以通过软件来进行图片的导入,创建长图日记, 心情报表:用户写日记…...

Docker 相关操作,及其一键安装Docker脚本

一、模拟CentOS 7.5上安装Docker&#xff1a; 创建一个CentOS 7.5的虚拟机或使用其他方式准备一个CentOS 7.5的环境。 在CentOS 7.5上执行以下命令&#xff0c;以安装Docker的依赖项&#xff1a; sudo yum install -y yum-utils device-mapper-persistent-data lvm2 添加Doc…...

【Microsoft Edge】如何彻底卸载 Edge

目录 一、问题描述 二、卸载 Edge 2.1 卸载正式版 Edge 2.2 卸载非正式版 Edge 2.2.1 卸载通用的 WebView2 2.2.2 卸载 Canary 版 Edge 2.2.3 卸载其他版本 2.3 卸载 Edge Update 2.4 卸载 Edge 的 Appx 额外安装残留 2.5 删除日志文件 2.6 我就是想全把 Edge 都删了…...

2023-09-04力扣每日一题

链接&#xff1a; 449. 序列化和反序列化二叉搜索树 题意&#xff1a; 把一个二叉搜索树变成字符串&#xff0c;还要能变回来 解&#xff1a; 和剑指 Offer 37. 序列化二叉树差不多&#xff0c;那个是二叉树的序列化/反序列化-Hard 直接CV了&#xff0c;懒: ( 如果是二叉…...

jQuery成功之路——jQuery事件和插件概述

一、jQuery的事件 1.1常用事件 jQuery绑定事件&#xff0c;事件名字没有on。 事件名称事件说明blur事件源失去焦点click单击事件源change内容改变keydown接受键盘上的所有键(键盘按下)keypress接受键盘上的部分键&#xff08;ctrl,alt,shift等无效&#xff09;(键盘按下)key…...

Intel XE核显PyTorch环境搭建避坑指南

1. 为什么选择Intel XE核显跑PyTorch&#xff1f; 最近很多小伙伴都在问&#xff0c;用Intel XE核显跑PyTorch到底靠不靠谱&#xff1f;作为一个在AI领域摸爬滚打多年的老司机&#xff0c;我可以很负责任地告诉你&#xff1a;完全可行&#xff01;特别是对于预算有限的学生党&a…...

当仿真与FPGA打架时,你该信谁?

该文章同步至公众号OneChan 一、一个真实的故事&#xff1a;比特翻转的“罗生门” 去年&#xff0c;我们在做一款通信芯片的嵌入式固件开发。在仿真环境中&#xff0c;我们精心编写的DMA驱动完美无缺&#xff0c;数据传输的CRC校验次次通过。我们信心满满地把比特流下载到FPG…...

FreeRTOS数据通信避坑指南:为什么我的MessageBuffer总是接收失败?

FreeRTOS消息缓冲区实战&#xff1a;从接收失败到高效通信的深度解析 第一次在FreeRTOS项目中使用MessageBuffer时&#xff0c;我遇到了一个令人抓狂的问题——明明发送端显示消息已成功写入&#xff0c;接收端却总是返回0字节。调试器显示缓冲区非空&#xff0c;但xMessageBuf…...

Qwen-Image-Edit-F2P开源可部署优势:模型权重完全本地化,无外部API依赖风险

Qwen-Image-Edit-F2P开源可部署优势&#xff1a;模型权重完全本地化&#xff0c;无外部API依赖风险 1. 开箱即用的AI图像编辑体验 想象一下&#xff0c;你只需要一台配备24GB显存的电脑&#xff0c;就能拥有一个专业的AI图像编辑工作室。Qwen-Image-Edit-F2P正是这样一个让人…...

Neeshck-Z-lmage_LYX_v2多场景落地:LoRA动态加载赋能数字人直播背景实时生成系统

Neeshck-Z-lmage_LYX_v2多场景落地&#xff1a;LoRA动态加载赋能数字人直播背景实时生成系统 1. 项目简介&#xff1a;一个专为本地绘画优化的轻量级工具 如果你对AI绘画感兴趣&#xff0c;特别是想体验国产的Z-Image文生图模型&#xff0c;但又被复杂的部署流程、繁琐的参数…...

MATLAB图像处理实战:5分钟搞定腐蚀膨胀操作(附完整代码)

MATLAB图像形态学处理实战&#xff1a;从原理到代码实现 在数字图像处理领域&#xff0c;形态学操作就像一把精密的"手术刀"&#xff0c;能够对图像进行精细的"雕刻"和"修饰"。无论是去除噪点、填补空洞&#xff0c;还是分离粘连物体&#xff0c…...

Swagger2Word终极指南:从Swagger文档到专业Word接口文档的高效转换方案

Swagger2Word终极指南&#xff1a;从Swagger文档到专业Word接口文档的高效转换方案 【免费下载链接】swagger2word 项目地址: https://gitcode.com/gh_mirrors/swa/swagger2word Swagger2Word是一款专为开发团队设计的开源工具&#xff0c;能够将Swagger/OpenAPI接口文…...

RK3588中使用Serial转发订阅的话题数据

我们在ROS的使用中&#xff0c;常常会通过rostopic echo /***来订阅某个话题数据的输出&#xff0c;我想通过串口对其通串口进行转发。#查看ros话题列表 rostopic list 找到一个你想要订阅的话题如/IMU_data#订阅话题通过终端查看 rostopic echo /IMU_data就会看到以下这种数据…...

【Frida Android】实战篇:Frida-Trace 进阶追踪——JNI 函数调用栈与参数解析

1. 深入理解JNI函数调用栈追踪 第一次用Frida-Trace追踪JNI函数时&#xff0c;最让我困惑的就是如何看清整个调用链路。记得当时分析一个金融类APP&#xff0c;发现它调用了十几个so库&#xff0c;函数调用关系像蜘蛛网一样复杂。后来通过反复实践&#xff0c;终于摸索出一套完…...

开源工具Lenovo Legion Toolkit:游戏本性能管理的轻量化创新方案

开源工具Lenovo Legion Toolkit&#xff1a;游戏本性能管理的轻量化创新方案 【免费下载链接】LenovoLegionToolkit Lightweight Lenovo Vantage and Hotkeys replacement for Lenovo Legion laptops. 项目地址: https://gitcode.com/gh_mirrors/le/LenovoLegionToolkit …...