栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

点云 3D 可视化 - Open3D 库

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

点云 3D 可视化 - Open3D 库

点云 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 pip3D data structures3D data processing algorithmsScene reconstructionSurface alignmentPBR rendering3D visualizationPython binding

安装方法

conda install open3d  或者  pip install open3d
2. 3D 可视化使用 2.1 单帧点云
import numpy as np
import open3d as o3d

colormap = np.array([[150, 150, 150],
                    [255, 0, 255],
                    [0, 255, 0],
                    [0, 200, 255],
                    [255, 255, 0]]) / 255.0

path = '/home/hjw/PointCloudTest/PointCloudTestData.npy'  # 本人自己的测试数据,直接替换即可
pointCloud = np.load(path).astype(np.float32, copy=False)
point3D = pointCloud[:, :3]  # x, y, z
pointIntensity = pointCloud[:, 3]  # intensity

pointColor = [colormap[int(pointIntensity[i]) % colormap.shape[0]] for i in range(pointIntensity.shape[0])]

pcd = o3d.geometry.PointCloud()  # 传入3d点云

pcd.points = o3d.utility.Vector3dVector(point3D)  # point3D 二维 numpy 矩阵,将其转换为 open3d 点云格式

pcd.colors = o3d.utility.Vector3dVector(pointColor)  # 根据 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 o3d

path = '/home/hjw/PointCloudTest/'  # 本人自己的测试数据路径,直接替换即可
files = os.listdir(path)

vis = o3d.visualization.Visualizer()
vis.create_window()
pcd = o3d.geometry.PointCloud()
toReset = True
vis.add_geometry(pointcloud)

for f in files:
    pointCloud = np.load(path + f).astype(np.float32, copy=False)
    point3D = pointCloud[:, :3]  # x, y, z
    pointIntensity = pointCloud[:, 3]  # intensity

    pcd.points = o3d.utility.Vector3dVector(point3D)
    
    vis.update_geometry(pcd)
    
    if toReset:
        vis.reset_view_point(True)
        toReset = False
    
    vis.poll_events()
    vis.update_renderer()
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/757877.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号