Open3D 可视化窗口中查看点的坐标数据

目录

一、概述

1.1实现步骤

1.2应用

二、代码实现

2.1关键函数

2.2完整代码

三、实现效果

3.1选取点

3.2数据显示


前期试读,后续会将博客加入下列链接的专栏,欢迎订阅

Open3D与点云深度学习的应用_白葵新的博客-CSDN博客

一、概述

        可以使用Open3D在可视化窗口中查看点的坐标数据,并允许用户选择点云中的点。该方法在数据验证、特征提取、调试和调优等方面具有广泛的应用。通过定义允许用户选择点的函数、创建带有编辑功能的可视化工具、读取点云数据并运行可视化窗口,可以方便地在Open3D的可视化窗口中查看和选择点云数据的详细信息。

1.1实现步骤

1.定义点云选择函数
        - 创建一个函数 pick_points,用于在Open3D的可视化窗口中选择点云中的点。
2.用户提示
        - 在控制台输出提示信息,告诉用户如何进行点的选择和撤销选择。
3.创建带有编辑功能的可视化工具
        - 使用Open3D中的 VisualizerWithEditing 类创建一个可视化工具。
        - 设置可视化窗口的名称、大小和位置。
        - 将输入的点云数据添加到可视化窗口中。
4.运行可视化工具
        - 启动可视化工具,打开可视化窗口,让用户可以在窗口中选择点。
        - 等待用户操作,让用户使用鼠标在窗口中选择点。
        - 用户完成选择后,关闭可视化窗口。
5. 获取和返回用户选择的点的索引列表

1.2应用

1.数据验证:
        在点云处理和分析过程中,可以使用此方法验证点云数据的正确性和精度。
2.特征提取:
        可以用来查看和提取点云中感兴趣的特征点的坐标,辅助后续的点云分析和处理。
3.调试和调优:
        在点云算法开发和调试过程中,可以实时查看和调整选中的点云数据,优化算法效果。

二、代码实现

2.1关键函数

        定义一个名为 pick_points 的函数,该函数允许用户在Open3D的可视化窗口中选择点云中的点。在可视化窗口中shift+鼠标左键就可以选取点

def pick_points(cloud):"""允许用户在Open3D可视化窗口中选择点云中的点。参数:cloud (open3d.geometry.PointCloud): 输入点云。返回:list: 用户选择的点的索引列表。"""print("   Press [shift + right click] to undo point picking")print(" After picking points, press 'Q' to close the window")# 创建带有编辑功能的可视化工具vis = o3d.visualization.VisualizerWithEditing()vis.create_window(window_name='Point Cloud Picker', width=800, height=800, left=50, top=50, visible=True)vis.add_geometry(cloud)# 运行可视化工具,让用户选择点vis.run()# 销毁可视化窗口vis.destroy_window()# 返回用户选择的点的索引列表return vis.get_picked_points()

2.2完整代码

import open3d as o3ddef pick_points(cloud):"""允许用户在Open3D可视化窗口中选择点云中的点。参数:cloud (open3d.geometry.PointCloud): 输入点云。返回:list: 用户选择的点的索引列表。"""print("   Press [shift + right click] to undo point picking")print(" After picking points, press 'Q' to close the window")# 创建带有编辑功能的可视化工具vis = o3d.visualization.VisualizerWithEditing()vis.create_window(window_name='Point Cloud Picker', width=800, height=800, left=50, top=50, visible=True)vis.add_geometry(cloud)# 运行可视化工具,让用户选择点vis.run()# 销毁可视化窗口vis.destroy_window()# 返回用户选择的点的索引列表return vis.get_picked_points()if __name__ == "__main__":# 读取点云数据pcd = o3d.io.read_point_cloud(r"E:\work\Open3D\open3d20231128\Blog_Cloud\cloud_data\bunny.pcd")# 调用函数,允许用户选择点picked_indices = pick_points(pcd)# 输出选择的点的索引print(f"Picked points indices: {picked_indices}")

三、实现效果

3.1选取点

3.2数据显示

ress [shift + right click] to undo point pickingAfter picking points, press 'Q' to close the window
[Open3D INFO] Picked point #20821 (-0.037, 0.099, -0.022) to add in queue.
[Open3D INFO] Picked point #4720 (-0.035, 0.09, 0.044) to add in queue.
[Open3D INFO] Picked point #4304 (-0.05, 0.086, 0.046) to add in queue.
[Open3D INFO] Picked point #2294 (-0.034, 0.065, 0.04) to add in queue.
[Open3D INFO] Picked point #18682 (-0.022, 0.055, 0.044) to add in queue.
[Open3D INFO] Picked point #1247 (0.0075, 0.053, 0.052) to add in queue.
[Open3D INFO] Picked point #10047 (0.017, 0.078, 0.053) to add in queue.
[Open3D INFO] Picked point #6380 (0.024, 0.11, 0.039) to add in queue.
[Open3D INFO] Picked point #11096 (0.011, 0.12, 0.036) to add in queue.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/1486934.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

Java语言程序设计基础篇_编程练习题**15.19 (游戏:手眼协调)

**15.19 (游戏:手眼协调) 请编写一个程序,显示一个半径为10像素的实心圆,该圆放置在面板上的随机位置,并填充随机的顔色,如图15-29b所示。单击这个圆时,它会消失,然后在另一个随机的位置显示新的随机颜色的…

【工具】轻松转换JSON与Markdown表格——自制Obsidian插件

文章目录 一、插件简介二、功能详解三、使用教程四、插件代码五、总结 一、插件简介 JsonMdTableConverter是一款用于Obsidian的插件,它可以帮助用户在JSON格式和Markdown表格之间进行快速转换。这款插件具有以下特点: 轻松识别并转换JSON与Markdown表格…

Java | Leetcode Java题解之第278题第一个错误的版本

题目&#xff1a; 题解&#xff1a; public class Solution extends VersionControl {public int firstBadVersion(int n) {int left 1, right n;while (left < right) { // 循环直至区间左右端点相同int mid left (right - left) / 2; // 防止计算时溢出if (isBadVers…

【linux驱动开发】卸载驱动时报错:Trying to free already-free IRQ 0

【linux驱动开发】free_irq时报错:Trying to free already-free IRQ 0 卸载驱动时报错Trying to free already-free IRQ 0 第一次加载卸载驱动没有任何问题。第二次加载驱动&#xff0c;按键中断触发失效&#xff0c;卸载驱动时报错:Trying to free already-free IRQ 0 看了…

牛客周赛50轮+cf955+abc363

D-小红的因式分解_牛客周赛 Round 50 (nowcoder.com) 思路&#xff1a; 巨蠢的题目&#xff0c;ax^2bxca1*a2*x^2(b1*a2b2*a1)xb1*b2&#xff0c;即&#xff1a; aa1*a2,ba1*b2a2*b1,cb1*b2 数据范围很小&#xff0c;直接暴力枚举吧&#xff08;注意条件&#xff09; 代码…

简单使用SpringMVC写一个图书管理系统的登入功能和图书展示功能

准备好前端的代码 这里已经准备好了前端的代码&#xff0c;这里仅仅简单的介绍登入功能&#xff0c;和展示图书列表的功能。 如图&#xff1a; 如上图所示&#xff0c;这里的前端代码还是比较多的&#xff0c;在这里我介绍&#xff0c;login.html还有book_list.html这两个。 l…

【快速逆向四/无过程/有源码】浙江工商职业技术学院 统一身份认证

逆向日期&#xff1a;2024.07.23 使用工具&#xff1a;Node.js 加密方法&#xff1a;RSAUtils 文章全程已做去敏处理&#xff01;&#xff01;&#xff01; 【需要做的可联系我】 AES解密处理&#xff08;直接解密即可&#xff09;&#xff08;crypto-js.js 标准算法&#xf…

万界星空科技MES系统的智能排产功能

万界星空科技MES系统通过一系列先进的手段和算法进行智能排产&#xff0c;这些手段确保了生产过程的优化和效率的提升。 1、智能分析&#xff1a; MES系统通过收集和分析生产过程中的数据&#xff0c;能够对生产过程进行智能分析。这包括分析哪些工序需要生产&#xff0c;哪些…

01 RabbitMQ:简单介绍

01 RabbitMQ&#xff1a;简单介绍 1. 简单介绍1.1. 什么是消息队列&#xff1f;1.2. 底层实现两大主流方式1.3. 两大主流方式对比1.4. 各个MQ产品的对比 2. RabbitMQ简介1.2. 官网1.3. 体系结构1.3.1. Producer1.3.2. Consumer1.3.3. Connection1.3.4. Channel1.3.5. Broker1.3…

【iOS】——属性关键字

属性关键字的类型 在iOS中属性关键字分为四种类型&#xff1a; 可访问性: readonly ,readwrite原子性 &#xff1a; atomic &#xff0c;nonatomic内存管理 &#xff1a; retain/strong/copy&#xff0c; assign/unsafe_unretained&#xff0c;weak方法命名&#xff1a;sette…

Next.js中构建完整的身份验证系统【翻译】

案例使用第三方库&#xff1a;NextAuth.js, Shadcn/ui, react-hook-form, and Zod等 prisma: is an open-source database toolkit. We will use it to store user credentials.next-auth: Authentication for Next.js.react-hook-form: a library that helps you validate fo…

Github Desktop 关于将本地文件夹设置为新仓库的 使用笔记

实际要达到的结果: 将UE5工程同步到Github,工程太大,我们只需要将必要的工程文件夹同步即可,缓存等一些不必要的文件夹则不需要同步 最终效果预览: 1. 将本地文件夹设置为新仓库 将本地文件夹作为仓库一般你是没有这个仓库的,所以你需要新建一个仓库 如果忽略某些不必要的文…

# OpenCV 图像预处理—形态学:膨胀、腐蚀、开运算、闭运算 原理详解

文章目录 形态学概念膨胀使用膨胀操作来修复裂痕示例代码关键解析&#xff1a; 腐蚀使用腐蚀操作消除噪点示例代码&#xff1a; 开运算—先腐蚀后膨胀闭运算—先膨胀后腐蚀 形态学概念 首先看这两张图片 一张图周围有大大小小的噪音和彩点&#xff0c;另一张图片中字母有间隙&…

go语言Gin框架的学习路线(十一)

目录 GORM的CRUD教程 更新操作 更新所有字段 更新指定字段 使用 Select 和 Omit 更新 无 Hooks 更新 批量更新 删除操作 删除记录 批量删除 软删除 物理删除 示例代码 GORM的CRUD教程 CRUD 是 "Create, Read, Update, Delete"&#xff08;创建、查询、…

Google Cloud Platform数据工程简介

Google Cloud Platform数据工程简介 前言 云计算的出现为数据驱动型组织提供了采用成本效益高且可扩展的数据工程解决方案的机会。在云服务提供商中&#xff0c;Google Cloud Platform (GCP) 是近年来表现优异的领导者之一。GCP的增长被归因于其在企业和初创公司中的日益普及…

【TypeScript 一点点教程】

文章目录 一、开发环境搭建二、基本类型2.1 类型声明2.2 基本类型 三、编译3.1 tsc命令3.2 tsconfig.json3.2.1 基本配置项includeexcludeextendsfiles 3.2.2 compilerOptions编译器的配置项 四、面向对象4.1 类4.2 继承4.3 抽象类4.4 接口 一、开发环境搭建 下载Node.js《Nod…

【全国大学生电子设计竞赛】2023年B题

&#x1f970;&#x1f970;全国大学生电子设计大赛学习资料专栏已开启&#xff0c;限时免费&#xff0c;速速收藏~

IP数据报结构详解:从基础到进阶

目录 IP数据报的格式 IP数据报首部的固定部分 IP数据报首部的可变部分 实例分析&#xff1a;数据报的分片 生存时间&#xff08;TTL&#xff09;与协议 首部检验和 总结 在网络通信中&#xff0c;IP数据报是至关重要的基本单元。本文将带您深入了解IP数据报的格式及其各个…

Python酷库之旅-第三方库Pandas(041)

目录 一、用法精讲 136、pandas.Series.ne方法 136-1、语法 136-2、参数 136-3、功能 136-4、返回值 136-5、说明 136-6、用法 136-6-1、数据准备 136-6-2、代码示例 136-6-3、结果输出 137、pandas.Series.eq方法 137-1、语法 137-2、参数 137-3、功能 137-4、…

数据结构-C语言-排序(4)

代码位置&#xff1a; test-c-2024: 对C语言习题代码的练习 (gitee.com) 一、前言&#xff1a; 1.1-排序定义&#xff1a; 排序就是将一组杂乱无章的数据按照一定的规律&#xff08;升序或降序&#xff09;组织起来。(注&#xff1a;我们这里的排序采用的都为升序) 1.2-排…