PCL入门系列 —— 点云数据类型及相关属性

PCL学习笔记(一)——从PCD文件中读取点云数据 初学PCL,基础为零,根据朱德海老师主编的《点云库PCL学习教程》进行的学习,但是对于零基础的我来说,还是参考了网上多位大神的心得才成功运行了第一个示例程序,因此在这里总结一下遇到的问题,仅供其他零基础伙伴参考,个中错误不足之处也请大家不吝赐教。就是使用下边的示例程序进行的学习。#include <iostream> #include <pcl/io/pcd_io.h> #... 阅读详情

PCL入门系列 —— 点云数据类型及相关属性


前言

随着工业自动化、智能化的不断推进,机器视觉(2D/3D)在工业领域的应用和重要程度也同步激增(识别、定位、抓取、测量,缺陷检测等),而针对不同作业场景进行解决方案设计时,通常会借助PCL、OpenCV、Eigen等简单方便的开源算法库进行方案的快速验证和迭代以满足作业场景下的目标需求。

为了让对工业机器视觉方向感兴趣的同学能够少走一些弯路,故推出了此一系列简易入门教程示例,让初次使用者能够最简单直观地感受到当前所用算法模块的执行效果。

后续会逐步扩增与工业机器视觉相关的一些其它内容,如:

项目案例剖析、场景数据分析、基础算法模块、相机评测 等;

如有兴趣可加入群聊(若入群二维码被屏蔽,则可以通过Q群(1032861997)或评论、私信博主“群聊”,邀请入群),与同道同学及圈内同行一起交流讨论。

在这里插入图片描述


程序说明

展示常用点云数据的类型及相关属性;

输出结果

在这里插入图片描述

代码示例

/*
 * @File: point_types.cpp
 * @Brief: pcl course
 * @Description: 展示常用点云数据的类型及相关属性
 * @Version: 0.0.1
 * @Author: MuYv
 */
#include <iostream>
#include <string>
#include <pcl/point_types.h>
#include <pcl/point_cloud.h>
#include <pcl/io/pcd_io.h>



int main(int argc, char** argv){
   
    // 列出常用的几种点数据格式

    // 常用于存储纯点云数据
    pcl::PointXYZ pt;            // x, y, z

    // 常用于存储纯带颜色的点云数据
    pcl::PointXYZRGB pt_rgb;     // x, y, z, r, g, b

    // 常用于存储带法向的点云
    pcl::PointNormal pt_normal;  // x, y, z, normal_x, normal_y, normal_z, curvature

    // 常用于存储带强度信息的点云(如灰度图点云)
    pcl::PointXYZI pt_intensity; // x, y, z, intensity

    // 常用于存储法线估计结果
    pcl::Normal normal;          // normal_x, normal_y, normal_z, curvature

    // 点云模板类的智能指针对象
    pcl::PointCloud<pcl::PointXYZ>::Ptr cloud(new pcl::PointCloud<pcl::PointXYZ>());

    // 也可进行先定义,后初始化
    pcl::PointCloud<pcl::PointXYZ>::Ptr cloud2;
    cloud2 = pcl::PointCloud<pcl::PointXYZ>::Ptr(new pcl::PointCloud<pcl::PointXYZ>());

    // 填充点属性数值
    pt.x = 1.0f;
    pt.y = 1.0f;
    pt.z = 1.0f;

    // 预申请10个数据量大小的内存空间,但并非实际使用大小
    cloud->reserve(10);

    // 将点数据压入点云中,此处模拟压入三个点数据
    cloud->push_back(pt);
    pt.x += 2;
    cloud->push_back(pt);
    pt.y += 3;
    cloud->push_back(pt);

    // 点云模板类重载了输出运算符"<<", 可简单查看当前点云相关属性数据
    std::cout<<"\ncloud info:\n"<<*cloud<<std::endl;

    // 判断是否为稠密点云, 即是否含无效点nan(not a number);
    std::cout<<"is dense: "<<((cloud->is_dense)?("true"):("false"))<<std::endl;

    // 判断是否为有序点云, 即height属性值是否不为1;
    std::cout<<"is organized: "<<((cloud->isOrganized())?("true"):("false"))<<std::endl;
    
    // width height size
    std::cout<<"cloud width x height: "<<cloud->width<<" x "<<cloud->height<<std::endl;
    std::cout<<"cloud size: "<<cloud->size()<<std::endl;

    // 遍历点云数据
    const int kPointNum = cloud->size();
    for(int idx=0; idx<kPointNum; ++idx){
        const auto& pt = cloud->points[idx];
        std::cout<<pt.x<<' '<<pt.y<<' '<<pt.z<<std::endl;
    }

    std::cout<<std::endl;
    return 0;
}

总结

如果是对有序点云数据进行处理,要注意无效点数据,通常无效点的x,y,z属性数值以nan、inf、0等形式表现;
尤其是在对单点进行操作时(如邻域搜索等),要注意无效点的处理;


注:部分测试所用点云数据来源于网络,如有侵权,请联系博主删除,谢谢。

基于QT的点云数据的可视化 一、点云及点云存储文件 1. 什么是点云 点云是在同一空间参考系下表达目标空间分布和目标表面特性的海量点集合,物体表面设置多个采样点获取这些点的信息,这些点包含了丰富的信息,包括三维坐标X,Y,Z、颜色、分类值、强度值、时间等等,而大量这种点组成的点集合就称之为点云(Point Cloud)。 2. 点云存储文件 点云文件可看作是一张三维图,将通过设备读取到的点云数据以某种特定格式存储于文件中,目... 阅读详情

相关推荐

11.2 PCL从ROS获取激光雷达的点云数据及处理

5、.bashrc文件在用户的home文件夹(/home/USERNAME/.bashrc)下。二是记住左栏发布的Topic后的/livox/lidar,这两个内容是后面PCL读取数据需要的。其实很简单,分三步走就可以:首先是通过ROS打开激光雷达,查看PCL配置需要的信息。以下代码也有个地方要改为/livox/lidar,在这里已经修改好了,如果你们的topic不同,则自己需要修改。,在这里,直接写读取激光雷达数据的步骤(和博址有略微的差别)。若打开后没有雷达返回的数据,则将左栏的设置为第一步的信息。

weixin_71719718的博客 5054

点云学习笔记(一)——点云定义、PCL数据类型和点云处理方式

刚刚入门学习点云知识,把学习中的要点记录一下,内容多来自他人博客和自己总结,从头开始。。 1.点云定义(来源于百度百科:https://baike.baidu.com/item/点云/10823598?fr=aladdin) 根据激光测量原理得到的点云,包括三维坐标(XYZ)和激光反射强度(Intensity)。 根据摄影测量原理得到的点云,包括三维坐标(XYZ)和颜色信息(RGB)。 结...

小阿福的博客 1万+

PCL入门基础操作(读写PCD文件/可视化)

PCL学习从PCD文件中读取点云数据loadPCDFile书中案例loadPCDFile例二pcl::PCDReader例子向PCD文件写入点云数据savePCDFileASCII书中案例pcl::PCDWriter例子PCD文件可视化PCLVisualizer书中案例可视化单个点云多视角显示pcl::PCDReader例子pcl_viewer工具一级目录 从PCD文件中读取点云数据 loadPCDFile书中案例 代码 #include <iostream> //标

EchoChou428的博客 9971

你知道三维激光LiDAR点云数据的反射强度Intensity反射率都有哪些超赞的用途吗?

除了灰度模式的反射强度显示效果,行业内广泛使用的还有将反射强度值 与色谱对应,从而使点云看起来红红绿绿色彩斑斓的,大大提升了渲染显示效果。为更好的人机交互带来保障。2、基于点云数据的强度信息可以对点云数据进行噪声过滤运算,将一定强度范围内的点云数据自动化移除。同样的道理,强度信息也可以为点云数据的灵活快速选择提供便利,在选取之后,可以进行下一步的操作,如隐藏、删除、着色等......3、使用点云数据的反射强度信息,可以对点云数据进行分类运算,让不同反射强度范围的点云数据被自动分类到你想要划分的类别。

YouAnKeJi的博客 4003

【PCL】SolidWorks 三维建模 STL, OBJ 采样生成 PCD 点云数据(附源码)

[PCL自学篇] 一.SolidWorks三维建模STL,OBJ采样生成PCD点云数据新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入 这阵子做线结构光视觉检测(轨道)项目的过程中,发现之前的许多知识点在逐渐遗忘,常言好记性

idiot5lie的博客 1万+

利用PCL库从点云数据生成深度图像及关键点提取

利用PCL库从点云数据生成生成深度图像及关键点提取 利用PCL库从点云数据生成深度图像及关键点提取 本想利用标准点云数据库分割成若干块,利用标准点云数据生成深度图像作为数据库用来验证算法,目前效果不是很好。不过作为一种特征点提取方法还是有参考价值。 1.点云–深度图像 可视化深度图像: 在3D viewer中以点云的方式显示。 另一种方式是作为一幅图像显示(以不同的颜色表示不同的深度值) 定义...

KLNSDFHUASF的博客 3714

PCL PointCloud类型介绍

PCL Pointcloud 类型介绍,主要介绍了Pointcloud 类的成员变量、构造函数、成员函数以及类外输出函数。

weixin_45867382的博客 1万+

PCL学习系列二:在Windows系统上安装PCL(Point Cloud Library)

本文详细介绍了在 Windows 系统上安装和配置 Point Cloud Library (PCL) 的步骤,涵盖了从下载、安装到使用 CMake 和 Visual Studio 编译 PCL 项目的全过程。本教程旨在帮助开发者和研究人员在 Windows 平台上快速部署 PCL,有效解决安装和编译中可能遇到的问题。

m0_51661400的博客 3812

01 点云中的NAN点

点云

darren_pty 1885

KITTI 原始点云数据(PCL)地面点分割

欢迎访问我的个人博客网站:zengzeyu.com   前言 自动驾驶系统中,对激光雷达获取的点云数据进行地面点分割是第一步,地面点分割结果的好坏直接影响聚类,识别和追踪效果。在对地面点分割过程中,前人尝试了许多方法,部分方法结果请参考本人博文《基于几何特征的地面点云分割》。所以,地面点分割是自动驾驶激光雷达点云处理永恒的话题。目前,基于几何特征的地面点分割都基于各自的前提假设,大多...

周吴郑王 4396

PCL点云库入门(第2讲)——PCL库中点云基本知识和数据类型结构

点云是由一系列数据点组成的集合,这些点通常代表三维空间中物体表面的点。点云数据可以通过各种三维扫描技术获得,如激光扫描(VLP系列)、结构光扫描( Kinect系列)或立体视觉扫描(Realsense系列)等。每个点通常包含三个坐标值(X、Y、Z),有时还包含颜色和反射率等其他信息。点云广泛应用于计算机视觉、机器人导航、三维建模、工业检测和文化遗产保护等领域。点云数据如下图1所示。图 1。

qq_36812406的博客 3399

PointCloud模板类解析

API参考文档:http://docs.pointclouds.org/1.7.2/a01003.html pcl::PointCloud&amp;lt;T&amp;gt; 注意PointCloud&amp;lt;T&amp;gt;模板类是点云类,其是由很多个点组成的。 PointCloud类包含以下成员变量: width——点云宽度 用点云数据集中的点数初始化width,width其实有两个含义: (1)对于...

zhanghm1995的博客 2184

告别倍福开发板:手把手教你用SSC工具为STM32生成EtherCAT从站代码

本文详细介绍了如何使用SSC工具为STM32生成EtherCAT从站代码,帮助开发者在不依赖倍福开发板的情况下实现高效的工业以太网通信。通过SSC工具的配置、XML文件设计、代码移植与硬件适配等步骤,开发者可以轻松构建自定义的EtherCAT通信系统,提升工业自动化项目的灵活性和效率。

weixin_33925615的博客 410

pcl库简介及入门实例,相关学习pcl库的资料

广泛应用于自动驾驶、机器人导航、3D建模、计算机视觉等领域。PCL 提供了丰富的点云处理功能,包括点云滤波、分割、配准、特征提取、重建和可视化等。PCL(Point Cloud Library)是一个强大的开源 C++ 库,用于处理。以下是一个简单的入门示例,用于加载点云数据、对点云进行降采样处理、并在窗口中可视化点云。通过不断实践,可以掌握点云处理的核心知识,并将其应用到实际项目中!:PCL 与 ROS、OpenCV、Eigen 等库无缝集成。:支持 Linux、Windows 和 macOS 平台。

小宝哥Code的专栏 2837

从零构建:基于Docker与FRR的OSPF虚拟网络实验室

本文详细介绍了如何利用Docker与FRR构建OSPF虚拟网络实验室,从环境设计到高级网络拓扑配置,再到实验验证与排错。通过容器化技术实现高效资源利用和快速部署,特别适合网络协议教学、企业网络架构验证等场景。

plum99的博客 220

【Codesys】获取从站信息,判断是否从站断联,总线丢失

获取EtherCAT从站信息,判断是否从站断联,总线丢失

qq_35316470的博客 5731

PCL入门系列 —— 点云数据加载及保存

在方案设计及开发验证时,通常会将中间环节的点云数据以本地文件的形式保存下来进行单独分析; 在分析点云数据时,较为常用的点云可视化分析软件有CloudCompare,简称CC,模型数据可视化分析软件可使用MeshLab;...

工业机器视觉 3768

Centos 7 Linux 离线安装单机 Kafka:下载、安装、配置、使用

本文详细介绍了在 CentOS 7 系统上离线安装单机版 Apache Kafka 的完整流程,包括环境准备(JDK 安装)、Kafka 安装包上传与解压、关键配置修改(如监听地址)、ZooKeeper 与 Kafka 服务的启动,以及 Topic 的创建、消息的生产和消费等基础操作。适用于无网络环境下的 Kafka 快速部署与学习,为后续开发或测试提供本地消息队列支持。

寒水馨 · 轻量级技术文档 · hanshuixin.org 1319

ROS与PCL中四种点云数据类型介绍

这篇文章算是一种记录,也是这个系列的文章开头,后续会更新点云相关的文章下面进行每种类型的点云数据的具体介绍。

沮丧的迈克尔 1449

TC3XX - MCAL知识点(二十):CAN MCAL配置及代码实战(CAN/CANFD/extenen CAN)

CAN驱动程序负责提供AUTOSAR指定的标准CAN通信服务。M_CAN单元是底层的CAN硬件单元,它由共享消息RAM(在AUTOSAR中称为硬件对象)的节点(在AUTOSAR中称为控制器)组成。CAN驱动提供以下服务:·初始化CAN控制器以控制CAN控制器的行为和状态·设置和修改CAN控制器的波特率配置·支持CAN和CAN FD帧的收发·在轮询和中断模式下,成功的帧传输通知,专用和FIFO消息的接收和总线事件通知·数据接收使用接收FIFO功能·假装网络模式处理·支持多读/写周期功能。

梦想技术家 3938

Altium Designer (AD) 设计软件高频面试题及参考答案(3万字长文)

在Altium Designer(AD)中,设计复用是一种关键的策略,它允许设计师在多个项目中重复使用经过验证的设计元素,如原理图符号、PCB布局、元器件封装和设计规则集。在Altium Designer (AD) 中,手动布线和交互式布线是PCB设计中常见的两种布线模式,它们提供了设计师对布线路径的直接控制,特别是在处理复杂或关键信号路径时尤为有用。在Altium Designer (AD) 中进行电路级仿真是一项重要的设计验证步骤,它允许设计师在实际制造之前对电路的行为进行预测和分析。

大模型大数据攻城狮的专栏 4782

PCL学习一:点云与PCL基础

PCL学习一:点云与PCL基础

qq_42994487的博客 1万+

【CASS精品教程】032:CASS11台阶画法案例大全

一、普通无边台阶 二、普通有边台阶 三、普通圆弧无边台阶 四、U型台阶 五、曲线U型台阶 六、L型台阶

智慧空间实验室 7463

用c++ PCL库和Opencv库实现将点云数据转化成图片形式

本人毕业设计与PCL点云和Opencv相关,但是点云是以点的形式存在,没有以图片的格式导出,进入Opencv图像处理,所以为此想要写一个封装函数,将3D点云款选出来变成2D的图片形式方便后续的图像处理。 小白初学c++和点云,有可以提升的算法优化步骤可以联系我一起交流

Jumping_Pig的博客 6717

2024年电气工程师最新面试题及答案

1. **基本电气工程原理**:包括电流、电压、电阻、功率等基本概念。2. **欧姆定律**:V = IR,描述电压、电流和电阻之间的关系。42. **风力发电系统组成**:包括风力涡轮机、发电机、控制系统等。44. **智能电网技术**:包括自动化控制、通信技术、数据分析等。10. **减少EMI**:使用屏蔽、滤波、合理布线等方法。40. **光伏系统组成**:包括光伏板、逆变器、控制器等。48. **能量存储技术**:包括电池、超级电容器、飞轮等。

guo162308的博客 6561

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

PCL点云数据类型扩展指南:从XYZ到XYZIRT的完整实现流程

本文提供了PCL点云数据类型从基础XYZ扩展到XYZIRT的完整实现指南。详细讲解了自定义PointXYZIRT结构体的创建、内存对齐、类型注册等核心步骤,并演示了如何读写包含激光线号和时间戳的PCD文件,帮助开发者高效处理现代激光雷达的丰富数据,满足运动畸变校正等高级应用需求。

yellow的专栏 921

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

上一篇: OpenCV入门系列 —— Scharr边缘检测
下一篇: PCL入门系列 —— PCLVisualizer可视化中窗口分割、点云着色、添加文本标签及坐标轴
工业机器视觉
博客等级 码龄11年 1万+粉丝 42原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值