当前位置: 首页 > news >正文

[Open3d]: 知识记录

python api 官方手册:http://www.open3d.org/docs/release/
可视化:http://www.open3d.org/docs/release/tutorial/visualization/visualization.html
python-vis 参考代码:https://github.com/isl-org/Open3D/tree/master/examples/python/visualization
Open3D-ML:https://github.com/isl-org/Open3D-ML # 基于open3d搞的一个ml项目,可以做一些预测结果&数据的可视化

Visualization 的一些快捷键

鼠标视图控制

  1. 左键+拖动 # 旋转
  2. ctrl + 左键+拖动 # 上下左右平移
  3. shift + 左键+拖动 # 绕垂直屏幕轴玄幻
  4. 滚轮 # 放大,缩小

键盘控制

  1. R # 重置view-point,回到打开的初始状态
  2. ctrl + c # 复制当前的view状态,存到剪切板中
  3. ctrl + v # 回到剪切板中的view
  4. Q, Esc # 退出窗口
    H : Print help message.
    P, PrtScn : Take a screen capture.
    D : Take a depth capture.
    O : Take a capture of current rendering settings.
ViewControl
# init visualizer first
self.o3d_visualizer = o3d.visualization.Visualizer()
self.o3d_visualizer.create_window(visible=False)
mesh_frame = geometry.TriangleMesh.create_coordinate_frame(size=1, origin=[0, 0, 0])  # create coordinate frame
self.o3d_visualizer.add_geometry(mesh_frame)# get ViewControl
ctr = self.o3d_visualizer.get_view_control()# set ViewControl
# refer to http://www.open3d.org/html/python_api/open3d.visualization.ViewControl.html#
# 改变内参来达到缩放的目的, 参考: https://github.com/isl-org/Open3D/issues/828
# get
param = vis.get_view_control().convert_to_pinhole_camera_parameters()# modify
# ... do something with param, e.g. zoom with changing the intrinsics# param.intrinsic.intrinsic_matrix  # 3x3
# param.extrinsic.view()  # 4x4# 在所有的add_geometry之后做# 放大2倍
zoom = 0.5
intrinsics = param.intrinsic.intrinsic_matrix.copy()
intrinsics[0] /= zoom
intrinsics[1] /= zoom
intrinsics[0, 2] = 1920 // 2 - 0.5  # 1920, 1080 是 create_window 的尺寸
intrinsics[1, 2] = 1080 // 2 - 0.5param.intrinsic.intrinsic_matrix = intrinsics
# init_param.extrinsic = self.extrinsics  # 如果传入了外参,就是前视图了# set
ctr.convert_from_pinhole_camera_parameters(param)
ctr.set_zoom(zoom)  # 这两个需要绑定才行
self.o3d_visualizer.update_renderer()  # 更新渲染器

set_zoom # 缩放
rotate(self, x, y, xo=0.0, yo=0.0) # 鼠标沿着x,y轴移动的距离. x,y为正表示沿着对应的轴正方向移动, 反正沿着负方向移动. 适当的值可以得到立体感。

不打开窗口保存渲染的图片
def show(self, save_path=None):"""Visualize the points cloud.Args:save_path (str): path to save image. Default: None."""# self.o3d_visualizer.run()if save_path is not None:# self.o3d_visualizer.capture_screen_image(save_path)self.o3d_visualizer.capture_screen_image(save_path, do_render=True)self.o3d_visualizer.destroy_window()return
http://www.lryc.cn/news/323043.html

相关文章:

  • css面试题
  • vscode调试launch.json常用格式
  • 巨细!Python爬虫详解
  • 项目中如何进行限流(限流的算法、实现方法详解)
  • https在win7的环境下如何配置
  • Day69:WEB攻防-Java安全JWT攻防Swagger自动化算法签名密匙Druid泄漏
  • Python Windows系统 虚拟环境使用
  • 栈和队列的学习
  • 【机器学习】基于机器学习的分类算法对比实验
  • 民航电子数据库:mysql与cae建表语法差异
  • (学习日记)2024.03.15:UCOSIII第十七节:任务的挂起和恢复
  • 聚类分析 | Matlab实现基于NNMF+DBO+K-Medoids的数据聚类可视化
  • Unity类银河恶魔城学习记录11-3 p105 Inventory UI源代码
  • Vue3 + Vite + ts引入本地图片
  • 图斑或者道路如何单独显示名称在图斑上或者道路上
  • docker 修改默认存储位置
  • Springboot+vue的医疗挂号管理系统+数据库+报告+免费远程调试
  • 【Effective C++】39 明智而审慎地使用private继承
  • 2024年卫生巾行业市场分析报告(京东天猫淘宝线上卫生巾品类电商数据查询)
  • MySQL之表的记录操作
  • 一种动态联动的实现方法
  • kotlin中使用ViewBinding绑定控件
  • 知识积累(五):Transformer 家族的学习笔记
  • [Java、Android面试]_13_map、set和list的区别
  • Linux进程管理:(六)SMP负载均衡
  • 计算机专业学生的成长之路:超越课堂的自我提升策略
  • 财报解读:“高端化”告一段落,华住开始“全球化”?
  • Wifi环境下Unity开发iOS应用启动后HTTPS请求未弹出是否允许无线数据使用数据的弹窗
  • 数据结构的概念大合集03(栈)
  • C++ 哈希表