PCL-获取点云体素中的所有点的索引的方法

2023-11-13

使用 octree 将点云体素化之后,获取体素中所有点的方法
即OctreeContainerBase中的三个方法的介绍:

getPointIndex()、getPointIndicesVector()、getPointIndices()

这三个方法都是定义在 pcl/octree/octree_container.h 文件中,源码如下:

首先在该文件中,leafDataTVector_ 是一个存储了该体素中所有点的 vector

        /** \brief Leaf node DataT vector. */
        std::vector<int> leafDataTVector_;

getPointIndex() 是一个 int 类型的方法,能够将该体素中所有点的索引的最后一个返回 

        /** \brief Retrieve point index from container. This container stores a vector of point indices.
         * \return index stored within container.
         */
        int
        getPointIndex ( ) const
        {
          return leafDataTVector_.back ();
        }

getPointIndices() 方法是 void 类型的,没有返回值,使用是需要将定义好的 vector 写进函数的参数中,调用该方法时会将该体素中所有点的索引都插入到参数中的 vector

       /** \brief Retrieve point indices from container. This container stores a vector of point indices.
         * \param[out] data_vector_arg vector of point indices to be stored within data vector
         */
        void
        getPointIndices (std::vector<int>& data_vector_arg) const
        {
          data_vector_arg.insert (data_vector_arg.end (), leafDataTVector_.begin (), leafDataTVector_.end ());
        }

getPointIndicesVector() 是 vector 类型,将体素中所有点的 vector 返回,需要一个 vector 接收

        /** \brief Retrieve reference to point indices vector. This container stores a vector of point indices.
         * \return reference to vector of point indices to be stored within data vector
         */
        std::vector<int>&
        getPointIndicesVector ()
        {
          return leafDataTVector_;
        }

测试代码如下:

	std::cout << "\n---- tranverse octree leaf node ----" << std::endl;
	pcl::octree::OctreePointCloud<pcl::PointXYZ>::LeafNodeIterator iter_leaf;
	iter_leaf = octree.leaf_begin();

	int counter = 0;
	while (iter_leaf != octree.leaf_end()) {
		std::vector<int> pointsIdx1;
		std::vector<int> pointsIdx2;
		
		int last_idx = iter_leaf.getLeafContainer().getPointIndex();
		pointsIdx1 = iter_leaf.getLeafContainer().getPointIndicesVector();
		iter_leaf.getLeafContainer().getPointIndices(pointsIdx2);

		std::cout << "last_idx: " << last_idx << std::endl;
		std::cout << "pointsIdx1.size(): " << pointsIdx1.size() << std::endl;
		std::cout << "pointsIdx2.size(): " << pointsIdx2.size() << std::endl;
    }

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

PCL-获取点云体素中的所有点的索引的方法 的相关文章

  • Open3d读写pcd点云文件

    本文为博主原创文章 未经博主允许不得转载 本文为专栏 python三维点云从基础到深度学习 系列文章 地址为 https blog csdn net suiyingy article details 124017716 1 Open3d 安
  • 点集配准—CPD(Coherent Point Drift) (附python代码)

    点集配准 CPD Coherent Point Drift 算法是一种点云配准算法 用于将两个点云对齐 该算法最初由Myronenko 和 Song 在2009年提出 CPD算法的核心思想是将一个点集看作是由一个概率密度函数生成的样本 然后
  • 【PCL】的五大依赖库及作用

    安装点云PCL Point Cloud Library 库时 需要额外安装5个依赖库 它们有什么作用呢 如下 Boost 用于共享指针和多线程 Eigen 一个标准的C 模板库用于线性代数 矩阵 向量等计算 FLANN Fast Appro
  • PCL点云库学习笔记(可视化2)

    PCL点云库学习笔记 可视化 可视化 四 PCLPlotter 五 MFC 开发实例 可视化 四 PCLPlotter 4 1 绘制多项式 PCLPlotter提供了一个非常简单明了的图形绘制界面 可以在库中可视化各种重要的图 从多项式函数
  • pcl经典算法60例——所有代码参考链接(开源)

    pcl经典算法60例大集合 方法名称 开源链接 1 打开点云 MFC显示点云 柯西等式的博客 CSDN博客 2 显示法线 PCL计算点云的法线 pcl 法线 Tom Hardy的博客 CSDN博客 3 三角化 PCL学习笔记 点云曲面重建
  • 【PCL】得到一个点云中的最高值、最低值

    有一个点云 想得到它x y z三个轴上的最大值和最小值 可以用pcl getMinMax3D函数 在这儿 函数参数 1 点云 2 放最小值的容器 3 放最大值的容器 容器类型是点云中点的类型 正好有三个值 代码 Created by eth
  • PCL点云库的架构

    1 输入 输出 PCL中所有的处理都是基于点云展开的 利用不同的设备获取点云 存储点云等都是点云处理前后必须做的流程 PCL中有自己设计的内部PCD文件格式 为此 设计读写该格式以及与其他3D文件格式之间进行转化的接口类都是很必要的 目前P
  • PCL点云处理之读取与保存PLY文件(点云\网格)(一百五十四)

    PCL点云处理之读取与保存PLY文件 一百五十四 一 PLY文件介绍 二 读取内容 1 点云 2 网格 一 PLY文件介绍 在平常的工作学习 会接触到后缀名为 ply的文件 这是一种常用的存储点云或者网格数据的文件格式 我们可以通过一些方法
  • c++ 代码连接激光雷达,使用 pybind11 得到python模块,可以直接在python中连接雷达,获取 numpy 格式激光数据

    注意 这个程序最后需要编译为 python 的一个模块 然后导入python中使用 底层原理是python调用c 程序连接激光雷达 然后把获取的数据转换为numpy格式 因为用python太慢了 C 函数 用于获取一个帧的数据并将其转换为P
  • 基于PCL的PCA算法实现点云的粗配准

    基于PCL的PCA算法实现点云的粗配准 一 引言 点云粗配准是三维重建和机器视觉中常见的任务之一 在点云数据中 我们需要找到两个或多个点云之间的刚性变换 以使它们对齐 主成分分析 PCA 是一种常用的数据降维和特征提取技术 也可以应用于点云
  • 改进的KMeans 点云聚类算法 根据体元中的点数量计算点密度,并获取前K个点密度最大的体元作为初始聚类中心(附 matlab 代码)

    KMeans函数的主要逻辑如下 使用InitCenter函数初始化聚类中心 该函数根据体元密度选择初始聚类中心 该函数的输入参数包括数据 data 聚类中心数量 centerNum 和体元数量 voxelNum 根据点云的取值范围计算包围盒
  • 两种点云分割(一)— RANSAC分割平面

    本文为博主原创文章 未经博主允许不得转载 本文为专栏 python三维点云从基础到深度学习 系列文章 地址为 https blog csdn net suiyingy article details 124017716 点云分割的目的是将点
  • UBUNTU16.04命令行安装PCL1.7(亲测有效)

    安装PCL点云库 最开始是按照先安装相关依赖 然后github上clone PCL相关版本包的形式安装的 编译遇到了很多问题 结果最后安装完成 但却无法运行例程 难过 又尝试了命令行的形式 命令行的形式直观简单 可安装编译好的点云库 PCL
  • 【点云格式互转】ply转bin、任意点云格式转ply

    本文为博主原创文章 未经博主允许不得转载 本文为专栏 python三维点云从基础到深度学习 系列文章 地址为 https blog csdn net suiyingy article details 124017716 3D点云存储方式的种
  • DBSCAN点云聚类

    1 DBSCAN算法原理 DBSCAN是一种基于密度的聚类方法 其将点分为核心点与非核心点 后续采用类似区域增长方式进行处理 下图为DBSCAN聚类结果 可见其可以对任意类别的数据进行聚类 无需定义类别数量 DBSCAN聚类说明 DBSCA
  • Visual Studio 2022配置PCL1.12.1版本点云库

    说明 这个配置步骤是当时自己参考2019配置的 当时网上还没有VS2022的配置步骤 我在自己电脑上是配置成功了 所以我将配置过程记录了下来 仅供参考 1 软件下载 Microsoft Visual Studio 2022 Pro http
  • las点云数据格式

    LIDAR Data LIDAR数据类似于带有激光的RADAR 是光检测和测距的缩写 laspy库提供了python API 用于读取 写入和操作一种流行的用来存储LIDAR数据的 LAS文件 LAS文件是根据几种规格打包的二进制文件 La
  • 3D点云处理:Opencv Pcl实现深度图转点云(附源码)

    文章目录 0 测试效果 1 代码实现 文章目录 3D视觉个人学习目录 0 测试效果 处理结果 1 代码实现 文章中提供的深度图像 深度图像一般以 tiff和 png保存 可以通过Opencv中的 c v i m r
  • 单目相机测距(3米范围内)二维码实现方案(python代码 仅仅依赖opencv)

    总体思路 先通过opencv 识别二维码的的四个像素角位置 然后把二维码的物理位置设置为 cv Point3f HALF LENGTH HALF LENGTH 0 tl cv Point3f HALF LENGTH HALF LENGTH
  • ios - Gamekit 的 GKOctree 未找到元素

    我正在尝试使用GKOctree https developer apple com documentation gameplaykit gkoctree用于高效检索 3D 空间中的对象 然而 以下代码似乎没有按预期工作 import Gam

随机推荐

  • linux查看系统中文件的内存占用以及具体某个文件夹下内存占用

    1 linux查看系统文件内存占用 df hl 2 Linux查看某个具体文件夹下文件的内存占用 du sh
  • SpringCloud——网关Gateway

    文章目录 六 统一网关 Gateway 6 1 网关介绍 6 2 快速搭建网关 6 3 断言工厂 6 4 过滤器工厂 6 5 全局过滤器 GlobalFIlter 6 6 过滤器的执行顺序 6 7 跨域问题 六 统一网关 Gateway 6
  • C编写的程序可能产生的主要缺陷

    摘自 软件静态分析工具评析 王 凯 孔祥营 空指针引用 悬空指针 资源泄露 函数返回值 使用未初始化变量 无限循环 死亡代码 缓冲区溢出 野指针等 1 空指针引用 空指针引用会导致程序崩溃 空指针引用的情况包括 忘记对指针为NULL 的情况
  • java入门四:数组

    1 数组概述 数组是最简单的数据结构 是相同类型数据的有序集合 数组描述的是相同类型的若干个数据 按照一定的先后次序排列组合而成的 数组中 每一个数据称作一个数组元素 每个数组元素可以通过一个下标来访问他们 2 数组的声明创建 首先必须声明
  • 分享解决jar包冲突问题的方法:(看了这个你就能解决所有包冲突问题!)

    1 问题描述 maven eclipse环境 1 1 昨晚发布这个新功能 接入notify消息中间件 预发失败 报 nested exception is java lang NoSuchMethodError org springfram
  • Go函数--匿名函数与闭包

    0 匿名函数概念 Go语言提供两种函数 有名函数和匿名函数 所谓匿名函数就是没有函数名的函数 匿名函数没有函数名 只有函数体 它和有名函数的最大区别是 我们可以在函数内部定义匿名函数 形成类似嵌套的效果 匿名函数常用于实现回调函数 闭包等
  • is服务器虚拟目录,Tomcat虚拟目录配置

    1 编辑server文件 x tomcat conf server xml 2 只要在server xml文件中加入如下代码即可 注意 在server xml中 此语句 unpackWARs true autoDeploy true xml
  • 数据库:sql 递归

    mysql 自关联表 以下为向下递归以及向上递归样例 1 递归查询前期准备 如果你的表已经存在 可忽略此步 建表 CREATE TABLE wq areainfo id int 11 NOT null AUTO INCREMENT leve
  • 服务器A拷贝文件到服务器B

    命令格式如下 scp 要拷贝的文件名 服务器B的用户名 IP 服务器B要存放的路径 拷贝文件 如 scp install log root 192 168 33 111 home 或 scp install log 192 168 33 1
  • Docker是什么?

    一 概述 Docker是一个用于开发 交付和运行应用程序的开放平台 Docker使您能够将应用程序与基础架构分离 从而实现快速交付软件 借助Docker 您可以以与管理应用程序相同的方式来管理基础架构 通过利用Docker快速交付 测试和部
  • python生成微信个性签名的词云图

    需要用到的库 itchat jieba numpy wordcloud import itchat import re import jieba import matplotlib pyplot as plt import PIL Imag
  • 企业运维

    欢迎关注 全栈工程师修炼指南 公众号 设为 星标 每天带你 基础入门 到 进阶实践 再到 放弃学习 专注 企业运维实践 网络安全 系统运维 应用开发 物联网实战 全栈文章 等知识分享 花开堪折直须折 莫待无花空折枝 作者主页 https w
  • QT控件之(QLabel)中加载了图片想清除掉

    这个时候直接在你加载图片的那个label中使用如下代码 清除label中加载过来的图片 label clear qt学习推荐 百度云盘 链接 https pan baidu com s 11b634VvKMIsGdahyBLpZ3Q 提取码
  • 远程调试Android/IOS设备/微信网页方法汇总

    以下汇总现在可远程调试手机网页的几个方法 基本上官方都有详细的说明文档 可移步至相关网站查看 这里就不赘述使用 操作方法了 微信web开发者工具 PC客户端 官方说明文档 支持Windows和Mac系统 支持调试Android和IOS设备
  • 原生 fetch 请求 fetch和ajax的区别

    比如请求一个json文件 async function 请求 let res fetch data1 json 解析内容 let data await res json 获取到json 文件 console log data 比如请求一个图
  • NG4+NG-ZORRO搭建项目

    一 安装Nodejs Angular CLI 安装nodejs node官网下载安装即可 安装完成后查看版本信息 npm v npm install g angular cli 下载Angular CLI 查看Angular CLI的安装结
  • 【正点原子STM32连载】第四十二章 FLASH模拟EEPROM实验 摘自【正点原子】MiniPro STM32H750 开发指南_V1.1

    1 实验平台 正点原子MiniPro H750开发板 2 平台购买地址 https detail tmall com item htm id 677017430560 3 全套实验源码 手册 视频下载地址 http www openedv
  • 使用Encoder-Decoder模型自动生成对联的思路

    版权声明 可以任意转载 转载时请标明文章原始出处和作者信息 author 张俊林 在我看到第一篇Encoder Decoder模型的论文的时候 我就觉得用这个来作对联自动生成是再合适不过的了 做诗词应该也是比较适合的 但是相对诗词 用它来做
  • Linux wget下载指定目录及重命名

    Linux系统wget下载指定目录及重命名 假设目录为 happy page 假设下载网址为 http www baidu com 假设下载文件的原始文件名为 baidu html 1 指定下载目录 wget P happy page ht
  • PCL-获取点云体素中的所有点的索引的方法

    使用 octree 将点云体素化之后 获取体素中所有点的方法 即OctreeContainerBase中的三个方法的介绍 getPointIndex getPointIndicesVector getPointIndices 这三个方法都是