点云 3D 可视化 - Open3D 库

  • 1. 文章信息
  • 2. Open3D 库简介
  • 2. 3D 可视化使用
    • 2.1 单帧点云
    • 2.2 多帧点云

1. 文章信息

(1)标题:Open3D: A Modern Library for 3D Data Processing (2018)

(2)文章链接:https://arxiv.org/pdf/1801.09847.pdf

(3)Open3D 库网址:http://www.open3d.org/

2. Open3D 库简介

  • Open3D 是一个开源库,支持快速开发处理 3D 数据的软件。Open3D 前端在 C++ 和 Python 中公开了一组精心选择的数据结构和算法。后端经过高度优化,并设置为并行化。Open3D 是从一块干净的石板上开发出来的,有一个小的、经过仔细考虑的依赖项集。它可以在不同的平台上设置,并从源代码进行编译,只需很少的工作量。代码干净、样式一致,并通过清晰的代码审查机制进行维护。Open3D已经在许多已发表的研究项目中使用,并积极部署在云端。我们欢迎开源社区的贡献。核心特性如下:
  • Simple installation via conda and pip
  • 3D data structures
  • 3D data processing algorithms
  • Scene reconstruction
  • Surface alignment
  • PBR rendering
  • 3D visualization
  • Python binding
  • 安装方法
conda install open3d  或者  pip install open3d

2. 3D 可视化使用

2.1 单帧点云

import numpy as np
import open3d as o3ddef hsv2rgb(h_, s_, v_):r_ = 0g_ = 0b_ = 0c_ = v_ * s_x_ = c_ * (1 - (abs((h_ / 60) % 2 - 1)))m = v_ - c_if (h_ >= 0) and (h_ < 60):r_ = c_ + mg_ = x_ + mb_ = 0 + melif (h_ >= 60) and (h_ < 120):r_ = x_ + mg_ = c_ + mb_ = 0 + melif (h_ >= 120) and (h_ < 180):r_ = 0 + mg_ = c_ + mb_ = x_ + melif (h_ >= 180) and (h_ < 240):r_ = 0 + mg_ = x_ + mb_ = c_ + melif (h_ >= 240) and (h_ < 300):r_ = x_ + mg_ = 0 + mb_ = c_ + melif (h_ >= 300) and (h_ < 360):r_ = c_ + mg_ = 0 + mb_ = x_ + mreturn np.array([r_, g_, b_])  # 0~1data_path = '/home/hjw/point_cloud_test/point_cloud_test_data.npy'  # 本人自己的测试数据,直接替换即可
point_cloud = np.load(data_path).astype(np.float32, copy=False)point_xyz = point_cloud[:, :3]  # x, y, z
point_intensity = point_cloud[:, 3]  # intensity# point_color = []  # user defined colormap
# colormap = np.array([[150, 150, 150],
#                     [255, 0, 255],
#                     [0, 255, 0],
#                     [255, 255, 0]]) / 255.0
# for point_id in range(point_cloud.shape[0]):
#     color_value = 0
#     point_color.append(colormap[color_value])# point_color = []  # ros colormap
# for point_id in range(point_cloud.shape[0]):
#     color_value = max(min(point_intensity[point_id], 255), 0) / 255.0 * 240.0
#     point_color.append(hsv2rgb(color_value, 1, 1))point_color = []  # pc colormap
for point_id in range(point_cloud.shape[0]):color_value = max(min(255 - point_intensity[point_id], 255), 0) / 255.0 * 240.0point_color.append(hsv2rgb(color_value, 1, 1))pcd = o3d.geometry.PointCloud()  # 传入3d点云pcd.points = o3d.utility.Vector3dVector(point_xyz)  # point_xyz 二维 numpy 矩阵,将其转换为 open3d 点云格式pcd.colors = o3d.utility.Vector3dVector(point_color)  # 根据 intensity 和 colormap 着色vis = o3d.visualization.Visualizer()
vis.create_window(width=800, height=600)  # 创建窗口
render_option = vis.get_render_option()  # 渲染配置
render_option.background_color = np.array([0, 0, 0])  # 设置点云渲染参数,背景颜色
render_option.point_size = 1.0  # 设置渲染点的大小
vis.add_geometry(pcd)  # 添加点云view_control = vis.get_view_control()  # 视角配置
# view_control.change_field_of_view(step=30)
# view_control.rotate(90.0, 10.0)
# view_control.set_front([0, 1, 0.5])
# view_control.set_lookat([1, 0, 0])
# view_control.set_up([0, -1, 0])
# view_control.translate(-50, -100)
view_control.set_zoom(0.2)vis.run()vis.destroy_window()

详细参数介绍见 API 网址:http://www.open3d.org/docs/release/python_api/open3d.visualization.ViewControl.html

2.2 多帧点云

import os
import numpy as np
import open3d as o3dfolder_path = '/home/hjw/point_cloud_test/'  # 本人自己的测试数据路径,直接替换即可
files = os.listdir(folder_path)vis = o3d.visualization.Visualizer()
vis.create_window(width=800, height=600)  # 创建窗口
pcd = o3d.geometry.PointCloud()
to_reset = True
vis.add_geometry(pcd)for file_index in range(len(files)):data_path = os.path.join(folder_path, files[file_index])point_cloud = np.load(data_path).astype(np.float32, copy=False)point_xyz = point_cloud[:, :3]  # x, y, zpoint_intensity = point_cloud[:, 3]  # intensitypcd.points = o3d.utility.Vector3dVector(point_xyz)vis.update_geometry(pcd)if to_reset:vis.reset_view_point(True)to_reset = Falsevis.poll_events()vis.update_renderer()

点云 3D 可视化 - Open3D 库相关推荐

  1. Open3D 三维点云读取可视化、下采样、去除离群点、地面提取

    Open3D:3D数据处理的现代库,是一个开放源代码库,支持快速开发处理3D数据的软件.Open3D在C ++和Python中公开了一组精心选择的数据结构和算法.后端经过高度优化,并支持并行化. 推荐 ...

  2. python 3D 可视化工具应用 - Open3D (一)

    python 版本 3D 可视化工具应用 -Open3D(一) open3d对于python版本的3d工具非常好用,且支持windows和ubuntu系统. 相关项目地址:https://gitcod ...

  3. 点云可视化 open3D

    禁止转载 好博客汇总 Python点云数据处理(六)Open3d补充:点云基本处理 - 知乎 https://zhuanlan.zhihu.com/p/353971365?utm_id=0 open3 ...

  4. 移动办公时代的工程行业怎么管理图像?大象云推出3D可视化整体解决方案

    三维可视化解决方案目前通用的有两种,一种是WebGL,一种是虚拟机或虚拟应用.WebGL是免费的开源方案,但WebGL对计算机硬件要求比较高,更新换代费用高.如果用户需要传递3D图,受显卡限制,需要提 ...

  5. OpenPCDet:点云3D目标检测开源库

    本文转载自知乎,已获作者授权转载. 链接:https://zhuanlan.zhihu.com/p/152120636 随着自动驾驶与机器人技术的不断发展,基于点云表征的3D目标检测领域在近年来取得了 ...

  6. Vue常用的组件库大全【前端工程师必备】【实时更新】【移动端、PC端(web端)、数据可视化组件库(数据大屏) 、动画组件库、3D组件库】

    Vue常用的组件库大全[前端工程师必备] (一)移动端 常用组件库 1)Vant ui 2)Cube UI 3)VUX 4) NuTUI 5)Mint ui 6)Varlet UI 7)OnsenUI ...

  7. GIS+WebGL智慧消防3D可视化云控系统

    智慧消防不仅仅是一个平台,一个解决方案,更是火灾救援中的一份安全保障,能为灭火救援提供信息支撑,提高救援效率,实现灭早灭小,充分保障人民群众的生命财产损失,是技术和时代创新发展的成果. 建设背景 近年 ...

  8. 点云 3D 目标检测 - PointPillars(CVPR 2019)

    点云 3D 目标检测 - PointPillars(CVPR 2019) 摘要 1. 导言 1.1 相关工作 1.1.1 使用CNNs进行目标检测 1.1.2 激光雷达点云中的目标检测 1.2 贡献 ...

  9. [学习SLAM] 3D可视化 只viz模块和pangolin

    viz模块主要用于3D可视化显示 与pangolin相比:缺点,不容易添加控件(按钮,滑动条等) ;优点,简单调试方便. 创建一个窗口并显示坐标系 首先看个简单示例程序,创建一个窗口并显示坐标系: / ...

最新文章

  1. 更改as的默认gradle地址_面试官:谈谈这4种磁盘IO调度算法--CFQ、NOOP、Deadline、AS...
  2. python语言命令大全-Linux命令大全
  3. 7 centos ssh 单机_虚拟机下CentOS7 开启SSH连接
  4. core-js@2 core-js@3报错问题
  5. LInux 下安装 python notebook 及指向路径,运行计时,炫酷的深蓝午夜主题,本地登陆远程服务器
  6. vue调用顺序(初学版) index.html → main.js → app.vue → index.js → components/组件 测试
  7. Apollo进阶课程㊳丨Apollo平台的快速入门
  8. 网友的VOIP总结 1
  9. php类3个属性是哪3种,PHP获取类私有属性的3种方法
  10. Matlab 全局变量定义与使用
  11. 51单片机4种流水灯
  12. 1 -- > PCI / PCIe 配置空间详解
  13. 我的信息化教学改革实践-“oao‘课堂
  14. 《老男孩》——记录我们逝去的青春
  15. 机器学习笔记六——特征工程之数据预处理
  16. 个人用户永久免费,可自动升级版Excel插件,使用VSTO开发,Excel催化剂功能第12波-快速生成、读取、导出条形码二维码...
  17. 智慧灯杆迈向标准化,5G智能灯杆网关加速“数字覆城”
  18. 程序员:品《漱玉词》看李清照生活审美
  19. DSP_F28335入门(1)——新建工程之gel文件解释
  20. python 网格交易源码_【宽客策略源码】网格交易(期货)

热门文章

  1. 小米路由器ARP绑定2021-09-08测试可用
  2. ABP+AdminLTE+Bootstrap Table权限管理系统第十一节--bootstrap table之用户管理列表
  3. 安装ubantu18.04到移动硬盘
  4. 如何将浏览器的默认语言设置成英文?
  5. li通过绑定点击事件实现类似购物车功能(全选,点击勾选、取消等),此例为模仿移动端小说书架界面实现勾选取消功能展示,有些麻烦但好理解(前端xb要努力变强)
  6. 关闭TransactionSynchronizationManager下日志打印
  7. highcharts 堆积图
  8. java毕业设计—— 基于java+JavaEE+jsp的售后服务管理系统设计与实现(毕业论文+程序源码)——售后服务管理系统
  9. “当直男问你为什么上班不化妆时...” 哈哈哈哈哈姐妹回复绝了!
  10. 基于卷积网络的人脸表情识别及其应用