news 2026/10/23 7:22:11

第六课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/10/22 13:22:58

【2026年精选毕业设计:基于本地大模型的个人数字健康管家系统(含论文+源码+PPT+开题报告+任务书+答辩讲解)】

2026年精选毕业设计:基于本地大模型的个人数字健康管家系统(含论文源码PPT开题报告任务书答辩讲解)告别云端依赖!这个毕设项目让AI健康助手真正“住”进你的电脑——全程离线、隐私无忧、还能语音对话!全套资料开源&am…

作者头像 李华
网站建设 2026/10/19 12:28:17

创业公司技术选型建议:PyTorch-CUDA-v2.7镜像提升研发效率

创业公司技术选型建议:PyTorch-CUDA-v2.7镜像提升研发效率 在AI创业浪潮中,一个现实问题反复浮现:新入职的算法工程师第一天上班,花了整整一天配置环境——CUDA驱动版本不匹配、cuDNN安装失败、PyTorch和Python版本冲突……最终模…

作者头像 李华
网站建设 2026/10/22 5:28:50

多GPU并行训练入门:PyTorch-CUDA-v2.7镜像支持多卡配置

多GPU并行训练入门:PyTorch-CUDA-v2.7镜像支持多卡配置 在深度学习模型日益庞大的今天,一个130亿参数的语言模型用单张RTX 4090跑完一轮训练可能需要两周时间——这显然无法满足快速迭代的研发节奏。更现实的情况是,研究者刚调好环境&#xf…

作者头像 李华
网站建设 2026/10/22 13:15:18

Anaconda下载慢?直接使用预装环境的PyTorch-CUDA-v2.7镜像

PyTorch-CUDA-v2.7镜像:告别Anaconda下载慢,开箱即用的深度学习环境 在深度学习项目启动的前几个小时,你是否也曾经历过这样的场景:满怀热情地打开电脑,准备复现一篇最新论文,结果卡在了 conda install py…

作者头像 李华
网站建设 2026/10/22 3:04:26

YOLOv11 mAP评估脚本:在PyTorch中计算检测精度

YOLOv11 mAP评估脚本:在PyTorch中计算检测精度 在目标检测领域,模型一旦训练完成,真正的考验才刚刚开始——我们如何客观地衡量它的表现?尤其是在YOLOv11这类追求速度与精度平衡的新一代架构下,一个可靠、高效的评估流…

作者头像 李华
网站建设 2026/10/22 15:27:31

轻量级深度学习环境:PyTorch-CUDA-v2.7仅需2分钟启动

轻量级深度学习环境:PyTorch-CUDA-v2.7仅需2分钟启动 在深度学习项目开发中,最让人头疼的往往不是模型调参,而是——“环境装不上”。 你有没有经历过这样的场景?刚拿到一块新GPU服务器,满心欢喜准备跑第一个训练任务&…

作者头像 李华