点云处理技术之open3d第五篇:使用open3d在点云中添加文字label(代码片段)

非晚非晚 非晚非晚     2022-12-12     202

关键词:

1. open3d版本确认

首先需要确保Open3d升级到版本0.13.0以上,才能使用open3d绘制文字的功能。可以用以下代码查看自己Open3d的版本:

import open3d
open3d.__version__

输出如下所示,可以看到我的open3d为0.15.2版本。

如果版本较低,可以采用以下命令升级Open3d:

pip install --upgrade open3d

2. 绘制点云与文字

官网提供了add_3d_label方法,同时也给出了绘制label的案例,代码还是比较简单的,直接看代码就可以理解了。下面对代码进行简要的说明:

  1. 代码中提供了两种绘制label信息的方式,分别为函数high_level()和low_level(),两种方法都可以,根据自己的需求选择。
  2. make_point_cloud函数为随机生成npts个点云。
  3. o3d.utility.Vector3dVector方法为将numpy格式的数据转换为open3d格式的点云数据。
import numpy as np
import open3d as o3d
import open3d.visualization.gui as gui
import open3d.visualization.rendering as rendering


def make_point_cloud(npts, center, radius):
    pts = np.random.uniform(-radius, radius, size=[npts, 3]) + center
    cloud = o3d.geometry.PointCloud()
    cloud.points = o3d.utility.Vector3dVector(pts)
    colors = np.random.uniform(0.0, 1.0, size=[npts, 3])
    cloud.colors = o3d.utility.Vector3dVector(colors)
    return cloud


def high_level():
    app = gui.Application.instance
    app.initialize()

    points = make_point_cloud(100, (0, 0, 0), 1.0)

    vis = o3d.visualization.O3DVisualizer("Open3D - 3D Text", 1024, 768)
    vis.show_settings = True
    vis.add_geometry("Points", points)
    for idx in range(0, len(points.points)):
        vis.add_3d_label(points.points[idx], "".format(idx))
    vis.reset_camera_to_default()

    app.add_window(vis)
    app.run()


def low_level():
    app = gui.Application.instance
    app.initialize()

    points = make_point_cloud(100, (0, 0, 0), 1.0)

    w = app.create_window("Open3D - 3D Text", 1024, 768)
    widget3d = gui.SceneWidget()
    widget3d.scene = rendering.Open3DScene(w.renderer)
    mat = rendering.MaterialRecord()
    mat.shader = "defaultUnlit"
    mat.point_size = 5 * w.scaling
    widget3d.scene.add_geometry("Points", points, mat)
    for idx in range(0, len(points.points)):
        widget3d.add_3d_label(points.points[idx], "".format(idx))
    bbox = widget3d.scene.bounding_box
    widget3d.setup_camera(60.0, bbox, bbox.get_center())
    w.add_child(widget3d)

    app.run()


if __name__ == "__main__":
    high_level()
    low_level()

显示效果如下:

点云处理技术之open3d第三篇:点云的高级操作篇——点云边界框凸包dbscan聚类平面分割和隐点移除(代码片段)

文章目录1.点云边界框2.凸包(convexhull)3.DBSCAN聚类4.RANSAC平面分割5.隐点移除(Hiddenpointremoval)本文是上一篇文章的延续,也是open3d处理点云的高级操作篇。本文将依次介绍open3d如何处理点云边界框、凸包、DBSCAN、RANSCA和隐点移除... 查看详情

点云处理技术之open3d第二篇:点云的基本操作篇——可视化降采样法向量裁剪和绘制点云(代码片段)

文章目录0.代码解释1.可视化点云2.点云的降采样3.顶点的法线估计4.访问顶点的法线5.点云的裁剪6.绘制点云下面分别介绍open3d的点云基本操作:可视化、降采样、法向量、裁剪和绘制点云。首先会统一给出代码和注释,然... 查看详情

『open3d』1.1点云处理python篇(代码片段)

    该博文介绍点云处理内容,包括点云IO可视化下采样凸包计算裁减法向量估计聚类隐藏点移除平面分割最小外接矩形外点移除1.open3d中的点云IOopen3d.io.read_point_cloud(filename,#点云文件路径format=\'auto\',#点云文件的格... 查看详情

爆肝5万字❤️open3d点云数据处理基础(python版)(代码片段)

Open3D点云数据处理基础(Python版)文章目录1概述2安装2.1PyCharm与Python安装2.3Anaconda安装2.4Open3D0.13.0安装2.5新建一个Python项目3点云读写4点云可视化2.1可视化单个点云2.2同一窗口可视化多个点云2.3可视化的属性设置5k-dtree与Oc... 查看详情

Open3d - 将多个点云可视化为视频/动画

】Open3d-将多个点云可视化为视频/动画【英文标题】:Open3d-visualizingmultiplepointcloudsasavideo/animation【发布时间】:2020-07-1510:03:25【问题描述】:我使用RGB+深度视频生成了多个点云,并希望将多个点云可视化为视频或动画。目前我... 查看详情

使用open3d和matplotlib可视化三维点云(代码片段)

目录1、使用open3d2、使用matplotlib1、使用open3dimportnumpyasnpimportopen3daso3d#filePath='./GEN_Ours_chair_1631677128/out.npy'filePath='./GEN_Ours_airplane_1631630214/out.npy'classVisualP 查看详情

open3d官方文档学习笔记(代码片段)

Open3D官方文档学习笔记第一部分——点云1可视化点云2体素降采样3顶点法线评估4访问顶点法线补充:Numpy在Open3D中的应用5裁剪点云补充1:获取点云坐标补充2:[交互式可视化](http://www.open3d.org/docs/release/tutorial/visualizat... 查看详情

open3d官方文档学习笔记(代码片段)

Open3D官方文档学习笔记第一部分——点云1可视化点云2体素降采样3顶点法线评估4访问顶点法线补充:Numpy在Open3D中的应用5裁剪点云补充1:获取点云坐标补充2:[交互式可视化](http://www.open3d.org/docs/release/tutorial/visualizat... 查看详情

基于open3d点云的slam系统教程

点云PCL免费知识星球,点云论文速读。文章:Open3DSLAM:PointCloudBasedMappingandLocalizationforEducation作者:EdoJelavic,JulianNubert,MarcoHutter,RoboticSystemsLab,ETHZurich编译:点云PCL教程地址:http 查看详情

open3d官方文档学习笔记(代码片段)

Open3D官方文档学习笔记第一部分——点云1可视化点云2体素降采样3顶点法线评估4访问顶点法线补充:Numpy在Open3D中的应用5裁剪点云补充1:获取点云坐标补充2:[交互式可视化](http://www.open3d.org/docs/release/tutorial/visualizat... 查看详情

从 realsense API 或 Open3D 库可视化点云

】从realsenseAPI或Open3D库可视化点云【英文标题】:visualizingthepointcloudfromrealsenseAPIorOpen3Dlibrary【发布时间】:2021-01-2802:04:16【问题描述】:我有一个来自英特尔实感摄像头的深度帧,我想将其转换为点云并可视化点云。到目前为... 查看详情

python如何实现点云可视化交互——open3d实例教程(获取所选点的信息)保姆级教学(代码片段)

...目前python中可用的用于3D数据处理的现代库,可以对点云、网格等三维数据进行读取、采样、配准、可视化等操作。其中对点云等三维模型进行可视化的功能在Python中显得非常方便。在通过对官方文档的研究之后作者发现在Op... 查看详情

open3d点云ransac拟合圆(python版本)

文章目录一、简介二、算法实现2.1算法步骤2.2代码实现三、实现效果参考资料一、简介具体的算法内容可以参考这几篇文章:https://blog.csdn.net/dayuhaitang1/article/details/109427412,这里就不再赘述。二、算法实现2.1算法步骤下面这个步... 查看详情

python-pclopen3d读取显示pcdbin等格式点云数据(代码片段)

第二章python-pcl、open3d读取、显示pcd、bin格式点云数据文章目录第二章python-pcl、open3d读取、显示pcd、bin格式点云数据前言环境一、点云数据类型1.基于python-pcl读取显示pcd、bin格式文件2.基于open3d读取显示pcd格式文件3.解析pcap格式... 查看详情

slam本质剖析-open3d

...L-SLAM而言,本系列也讲述了​​PCL​​、与​​GTSAM​​点云计算部分。之前的系列部分作者本以为已经基本讲完,但是近期突然发现还有关于​​Open3D​​的部分还没有写。趁着这次不全来形成一整个系列,方便自己回顾以及... 查看详情

使用open3d进行pcd拟合平面的python代码示例(代码片段)

...合平面的Python代码示例 importopen3daso3dimportnumpyasnp#读取点云数据pcd=o3d.io.read_point_cloud("2023042501.pcd")#创建PCD图pcd_graph=o3d.geometry.PointCloudGraph(pcd)#选择要拟合的平面plane_center=o3d.geometry.Vector3d(0.0,0.0,0.0)plane_normal=o3d.geometry.Vector3d(1.0,0... 查看详情

解决:open3d中unabletocastpythoninstancetoc++type(compileindebugmodefordetails)(代码片段)

项目场景: 三维点云重建问题描述:pcd.points=o3d.utility.Vector3dVector(source_data)#numpy.array转换成pointcloudRuntimeError:UnabletocastPythoninstancetoC++type(compileindebugmodefordetails)原因分析 查看详情

第五篇:白话tornado源码之褪去模板的外衣

...o框架中的生命周期,其本质就是利用epoll和socket来获取并处理请求。在上一篇的内容中,我们只是给客户端返回了简单的字符串,如:“HelloWorld”,而在实际开发中,需要使用html文件的内容作为模板,然后将被处理后的... 查看详情