首页 > 其他分享 >open3d点云可视化

open3d点云可视化

时间:2022-11-19 16:01:16浏览次数:118  
标签:__ vis open3d 可视化 点云 np o3d

【Open3D】点云可视化 - 知乎 (zhihu.com)

1. Open3D的安装

Open3D的安装比较简单,进入官网按照自己的需求直接下载合适自己的版本就可以了。这里放一波Open3d的官网链接:A Modern Library for 3D Data Processing

图2

2.可视化点云

点云数据存储的文件格式比较多样,常见的有.bin文件 .ply文件 .pcd文件,但其实不管什么文件,存储的都是一个个 [ x , y , z ]数据(有些点云数据里还会包括强度等信息),我们只需要先把这些点转换成open3d可以读取的数据类型,然后就进行可视化就可以了,下面直接放上进行逐句注释的代码。(以.npy文件为例)

import open3d as o3d
import numpy as np 

def main():

    raw_point = np.load('1.npy') #读取1.npy数据  N*[x,y,z]

    #创建窗口对象
    vis = o3d.visualization.Visualizer()
    #设置窗口标题
    vis.create_window(window_name="kitti")
    #设置点云大小
    vis.get_render_option().point_size = 1
    #设置颜色背景为黑色
    opt = vis.get_render_option()
    opt.background_color = np.asarray([0, 0, 0])

    #创建点云对象
    pcd=o3d.open3d.geometry.PointCloud()
    #将点云数据转换为Open3d可以直接使用的数据类型
    pcd.points= o3d.open3d.utility.Vector3dVector(raw_point)
    #设置点的颜色为白色
    pcd.paint_uniform_color([1,1,1])
    #将点云加入到窗口中
    vis.add_geometry(pcd)

    vis.run()
    vis.destroy_window()

    
if __name__=="__main__":
    main()
图3 点云可视化代码运行结果

3.可视化3D Bbox候选框

3D box候选框由八个顶点之间的十二条连线组成,我们要可视化Bbox候选框,那就要通过Label或模型输出内容里的[物体中心点位置(x,y,z),物体长度l,物体宽度w,物体高度h,物体旋转角度rot]这几个信息计算得出八个顶点的位置,最后把这八个点之间的线段可视化出来就可以了。(关于顶点具体计算过程等过几天有时间我再整理一下,这里重点记录下已经计算得出八个顶点的空间信息[8 × (x,y,z)],如何可视化线段)

import open3d as o3d
import numpy as np 

def main():

    points_3dbox = np.load('2.npy') #读取2.npy数据  8*[x,y,z] (八个顶点的空间信息)

    #创建窗口对象
    vis = o3d.visualization.Visualizer()
    #设置窗口标题
    vis.create_window(window_name="kitti")
    #设置点云大小
    vis.get_render_option().point_size = 1
    #设置颜色背景为黑色
    opt = vis.get_render_option()
    opt.background_color = np.asarray([0, 0, 0])
    
    #指明哪两个顶点之间相连
    lines_box = np.array([[0, 1], [1, 2], [0, 3], [2, 3], [4, 5], [4, 7], [5, 6], [6, 7],
                        [0, 4], [1, 5], [2, 6], [3, 7]])
    #设置点与点之间线段的颜色
    colors = np.array([[0, 1, 0] for j in range(len(lines_box))])
    #创建Bbox候选框对象
    line_set = o3d.geometry.LineSet()
    #将八个顶点连接次序的信息转换成o3d可以使用的数据类型
    line_set.lines = o3d.utility.Vector2iVector(lines_box)
    #设置每条线段的颜色
    line_set.colors = o3d.utility.Vector3dVector(colors)
    #把八个顶点的空间信息转换成o3d可以使用的数据类型
    line_set.points = o3d.utility.Vector3dVector(points_3dbox)
    #将矩形框加入到窗口中
    vis.add_geometry(line_set) 

    vis.run()
    vis.destroy_window()

    
if __name__=="__main__":
    main()
图4 3Dbox可视化代码运行结果

最后,我们只需要把2.中的点云和3.中的3Dbox放在同一个对象内可视化,就可以得到图1中的效果了。

 

标签:__,vis,open3d,可视化,点云,np,o3d
From: https://www.cnblogs.com/yibeimingyue/p/16906280.html

相关文章

  • 开发笔记1.1-配置可视化MySQL工具phpMyAdmin
    配置好phpMyAdmin前提是需要安装http服务器、php、phpMyAdmin1.安装http服务器#安装httpd服务器yuminstallhttpd#开启http服务器并设置开机启动sudosystemctlst......
  • R语言SVM和LDA文本挖掘分类开源软件存储库标签数据和词云可视化
    全文链接:http://tecdat.cn/?p=30413原文出处:拓端数据部落公众号开源软件存储库上有数千个开源软件,可以从中免费使用该软件。为了能够有效和高效地识别用户所需的软件,已根......
  • 项目开源 | 基于开源WebGIS的国内疫情数据可视化平台
    一、项目介绍本项目使用的技术是vite+Vue3,使用ArcGISAPIforjs前端地图开源框架,接口数据来源weibo。主要是对国内的疫情数据进行实时图表可视化。2022.11.12-2022.11.......
  • 二叉树可视化 - 哈夫曼树
    哈夫曼树可视化importmatplotlib.pyplotaspltclassTree:def__init__(self,weight=None,left=None,right=None):self.weight=weights......
  • 低代码可视化开发平台SovitJs功能更新速递
    SovitJS系列产品近期又做了不少的功能优化升级工作,以下将主要优化升级的内容列出供用户参考。数据源功能升级1.项目面板中增加数据源管理入口,方便快速管理数据源以及协同操......
  • LSTM模型可视化讲解
    昨夜突然刷到一条讲解LSTM的推送,其中一张图让我彻底明白了LSTM的输入模式。下面放链接:可视化理解LSTM(qq.com)[LSTM模型结构的可视化-知乎(zhihu.com)](......
  • 数据库可视化工具分享 (DBeaver)
    前提:最近公司下发通知,所有开发人员必须卸载Navicat数据库可视化工具,不知道兄弟们有没有在使用的,可能现在的反应跟我一样,一脸懵逼,Navicat为什么不能使用呢?有事没事找度......
  • 案例解析:电商销售数据可视化管理系统
    电商行业的快速发展得益于数字化经济的快速发展,大家纷纷借助大数据、5G等技术将自己的企业精细化管理。 电商销售数据可视化操作一般分为4步:①了解拥有的数据②确定想......
  • 使用Jupyter记事本记录和制作.NET可视化笔记
     前言:对于记录笔记的工具特别多,不过对于程序员来说,记录笔记+程序代码+运行结果演示可以同时存在,无疑会极大增加我们的笔记的可读性和体验感。以前在写python的时候,使用jup......
  • 一个简单的前端可视化监控系统
    背景首先我们为什么要做前端系统呢,先看下面这张表,可以很显然的看出,前端的性能对于产品的价值提升还是蛮有帮助的,但是这些信息如果我们能实时的采集到,并且实施以监控,让整个产......