news 2026/4/21 20:44:24

第六课Open3D点云数据处理:点云、mesh可视化(Visualizer类)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
第六课Open3D点云数据处理:点云、mesh可视化(Visualizer类)

1 Visualizer类

2 参数详解

2.1 常用参数

2.2 渲染参数 RenderOption 详解

3 点云可视化

3.1 最简单的点云可视化

3.2 可视化多个点云

3.3 可视化点云法线

3.4 其他参数

4 mesh可视化

4.1 最简单的mesh可视化

4.2 可视化三角网格和模型内表面

4.3 可视化多个mesh


1 Visualizer类

open3d.visualization.Visualizer是Open3D库中可视化工具的核心类,用于创建和管理3D场景,显示点云、网格等3D对象,以及设置相机视角和光照等。

2 参数详解

2.1 常用参数

  • create_window()

    create_window(window_name='Open3D', width=1920, height=1080, left=50, top=50, visible=True)

    全部为可选参数。

    • window_name (str, optional, default=‘Open3D’) – 可视化窗口的名字.

    • width (int, optional, default=1920) – 可视化窗口的宽度.

    • height (int, optional, default=1080) – 可视化窗口的高度.

    • left (int, optional, default=50) – 可视化窗口的左边距.

    • top (int, optional, default=50) – 可视化窗口的上边距.

    • visible (bool, optional, default=True) – 可视化窗口是否可见.

  • add_geometry(geometry):添加要可视化的几何对象geometry,可以是点云、mesh。

  • remove_geometry(geometry):移除已经添加的几何对象geometry,可以是点云、mesh。

  • clear_geometries():清空要可视化窗口中的所有几何对象。

  • set_full_screen(bool):设置是否全屏显示点云,默认False,不全屏显示。

  • toggle_full_screen():全屏/非全屏显示点云切换。即在非全屏下设置该函数,则将全屏展示;在全屏状态下设置该函数,则将退出全屏。

  • run():运行并显示可视化窗口。

  • destroy_window():关闭可视化窗口。

  • get_render_option():获取渲染参数 RenderOption,详情见 2.2节

2.2 渲染参数 RenderOption 详解

  • background_color = (r, g, b):可视化窗口的背景颜色,float类型,其中 r g b 取值范围在[0, 1].
  • point_size = float:(点云)点大小,float类型,。
  • point_show_normal = bool:(点云)可视化法线,bool类型,默认False.
  • mesh_show_wireframe = bool:(mesh)可视化三角网格,bool类型,默认False.
  • mesh_show_back_face = bool:(mesh)在mesh_show_wireframe = True 的前提下,可视化mesh内表面,bool类型,默认False.
  • show_coordinate_frame = bool:显示三维坐标轴,红色轴为X轴,绿色轴为Y轴,蓝色轴为Z轴。

3 点云可视化

3.1 最简单的点云可视化

import open3d as o3d import copy print("->加载点云...") pcd = o3d.io.read_point_cloud(r"H:\HTempWK\temp\open3d\pointdata\bunny\bunny.ply") # 创建可视化器 vis = o3d.visualization.Visualizer() # 创建可视化窗口 vis.create_window() # 将点云添加到场景中 vis.add_geometry(pcd) # 显示场景 vis.run() # 关闭窗口 vis.destroy_window()

3.2 可视化多个点云

import open3d as o3d import copy print("->加载点云...") pcd = o3d.io.read_point_cloud(r"H:\HTempWK\temp\open3d\pointdata\bunny\bunny.ply") # 进行深拷贝 pcd_t = copy.deepcopy(pcd) # 平移向量 translation = [0.2, 0.0, 0.0] # 在 z 轴上平移 10.0米 # 执行平移 pcd_t.translate(translation) # 创建可视化器 vis = o3d.visualization.Visualizer() # 创建可视化窗口 vis.create_window() # 将点云添加到场景中 vis.add_geometry(pcd) vis.add_geometry(pcd_t) # 显示场景 vis.run() # 关闭窗口 vis.destroy_window()

3.3 可视化点云法线

import open3d as o3d import copy # 读取点云文件 pcd = o3d.io.read_point_cloud(r"H:\HTempWK\temp\open3d\pointdata\bunny\bunny.ply") # 创建可视化器 vis = o3d.visualization.Visualizer() vis.create_window(window_name='点云法向量') radius = 0.01 # 搜索半径 max_nn = 30 # 邻域内用于估算法线的最大点数 pcd.estimate_normals(search_param=o3d.geometry.KDTreeSearchParamHybrid(radius, max_nn)) # 将点云添加到可视化器中 vis.add_geometry(pcd) # 渲染参数 opt=vis.get_render_option() # 背景色 opt.background_color = (0.9, 1, 0.9) # 点大小 opt.point_size = 2 # 法向量 opt.point_show_normal = True # 显示场景 vis.run() # 释放窗口 vis.destroy_window()

3.4 其他参数

import open3d as o3d import copy print("->加载点云...") pcd = o3d.io.read_point_cloud(r"H:\HTempWK\temp\open3d\pointdata\bunny\bunny.ply") # 进行深拷贝 pcd_t = copy.deepcopy(pcd) # 平移向量 translation = [0.0, 0.0, 10.0] # 在 z 轴上平移 10.0米 # 执行平移 pcd_t.translate(translation) # 创建可视化器 vis = o3d.visualization.Visualizer() vis.create_window(window_name='其他参数', width=1920, height=1080, left=50, top=50, visible=True) # 将点云添加到场景中 vis.add_geometry(pcd) vis.add_geometry(pcd_t) # 移除场景中的点云pcd_t vis.remove_geometry(pcd_t) # 清空场景内的所有点云 vis.clear_geometries() # 将点云pcd_t添加到场景中 vis.add_geometry(pcd_t) # 全屏 vis.set_full_screen(True) # 全屏/非全屏 切换 vis.toggle_full_screen() # 显示场景 vis.run() # 关闭窗口 vis.destroy_window()

4 mesh可视化

import open3d as o3d import copy # 读取mesh文件 mesh = o3d.io.read_triangle_mesh("bunny.ply") # 创建可视化器 vis = o3d.visualization.Visualizer() vis.create_window(window_name='最简单的mesh可视化') # 将点云添加到可视化器中 vis.add_geometry(mesh) # 显示场景 vis.run() # 释放窗口 vis.destroy_window()

4.1 最简单的mesh可视化

import open3d as o3d import copy # 读取mesh文件 mesh = o3d.io.read_triangle_mesh("bunny.ply") # 创建可视化器 vis = o3d.visualization.Visualizer() vis.create_window(window_name='三角网格内表面') # 将点云添加到可视化器中 vis.add_geometry(mesh) # 渲染参数opt opt = vis.get_render_option() # 背景色 opt.background_color = (0.9, 1, 0.9) # 三角网格 opt.mesh_show_wireframe = True # 内表面 opt.mesh_show_back_face = True # 坐标轴 opt.show_coordinate_frame = True # 显示场景 vis.run() # 释放窗口 vis.destroy_window()

4.2 可视化三角网格和模型内表面

import open3d as o3d import copy # 读取mesh文件 mesh = o3d.io.read_triangle_mesh("bunny.ply") # 创建可视化器 vis = o3d.visualization.Visualizer() vis.create_window(window_name='三角网格内表面') # 将点云添加到可视化器中 vis.add_geometry(mesh) # 渲染参数opt opt = vis.get_render_option() # 背景色 opt.background_color = (0.9, 1, 0.9) # 三角网格 opt.mesh_show_wireframe = True # 内表面 opt.mesh_show_back_face = True # 坐标轴 opt.show_coordinate_frame = True # 显示场景 vis.run() # 释放窗口 vis.destroy_window()

4.3 可视化多个mesh

import open3d as o3d import copy # 读取mesh文件 mesh = o3d.io.read_triangle_mesh("bunny.ply") # 进行深拷贝 mesh_t = copy.deepcopy(mesh) # 平移向量 translation = [0.2, 0.0, 0.0] # 在 x 轴上平移 0.2 米 # 执行平移 mesh_t.translate(translation) # 创建可视化器 vis = o3d.visualization.Visualizer() vis.create_window(window_name='可视化多个mesh', width=1920, height=1080, left=50, top=50, visible=True) # 将点云添加到可视化器中 vis.add_geometry(mesh) vis.add_geometry(mesh_t) # 渲染参数opt opt = vis.get_render_option() # 背景色 opt.background_color = (0.9, 1, 0.9) # 三角网格 opt.mesh_show_wireframe = True # 坐标轴 opt.show_coordinate_frame = True # 显示场景 vis.run() # 释放窗口 vis.destroy_window()
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/20 17:58:28

深度解析大模型微调技术:LoRA、QLoRA、DPO全对比,建议收藏!

深度解析2025年大模型微调技术:LoRA、QLoRA、DPO全对比,建议收藏! 文章系统介绍了大语言模型微调技术的演进与现状,重点分析了参数高效微调(PEFT)的革命性技术,包括LoRA及其改进版QLoRA、VeRA、DoRA和AdaLoRA&#xff…

作者头像 李华
网站建设 2026/4/18 16:52:21

为什么越来越多开发者选择PyTorch-CUDA预装镜像?

为什么越来越多开发者选择PyTorch-CUDA预装镜像? 在深度学习项目启动的前48小时里,你更愿意把时间花在模型设计上,还是反复折腾CUDA版本和驱动兼容性?这几乎是每个AI工程师都经历过的灵魂拷问。而如今,越来越多团队正在…

作者头像 李华
网站建设 2026/4/17 16:50:55

GPU算力租赁新趋势:结合PyTorch镜像实现按需付费模式

GPU算力租赁新趋势:结合PyTorch镜像实现按需付费模式 在AI模型越来越“大”、训练任务越来越复杂的今天,一个开发者最怕听到的提示是什么? 不是“代码有bug”,而是——“CUDA out of memory”。 这句报错背后,往往意味…

作者头像 李华
网站建设 2026/4/21 1:19:25

AI Agent与RAG技术:开发者进阶的核心竞争力

今年,AI 技术栈的迭代速度,已经超过了大多数程序员的学习速度。 当你的同事还在讨论如何写 Prompt 时,DeepSeek R1、Gemini 3 等新一代推理模型,已经重新定义了人机交互的边界。当你的团队还在为 RAG 的准确率头疼时,L…

作者头像 李华
网站建设 2026/4/18 4:43:22

开源大模型训练利器:PyTorch-CUDA-v2.7镜像深度评测

开源大模型训练利器:PyTorch-CUDA-v2.7镜像深度评测 在当今AI研发节奏日益加快的背景下,一个稳定、高效且开箱即用的深度学习环境,已经成为决定项目成败的关键因素。想象一下:你刚刚接手一个前沿的大模型训练任务,GPU服…

作者头像 李华
网站建设 2026/4/11 16:38:48

JupyterLab集成PyTorch环境:通过容器化镜像一键启动

JupyterLab集成PyTorch环境:通过容器化镜像一键启动 在深度学习项目中,你是否曾经历过这样的场景:代码在本地跑得好好的,换一台机器却报出一连串依赖错误?或者好不容易装好 PyTorch,却发现 torch.cuda.is_…

作者头像 李华