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

网站后台无法访问o2o有哪些电商平台

网站后台无法访问,o2o有哪些电商平台,称多县公司网站建设,wordpress文章中加入搜索框1. 前言 在使用 Open3D 进行三维可视化和点云处理时#xff0c;有时需要将当前的视角#xff08;Camera Viewpoint#xff09;保存下来#xff0c;以便下次再次打开时能够还原到同样的视角。本文将演示如何在最新的 Open3D GUI 界面#xff08;o3d.visualization.gui / o…1. 前言 在使用 Open3D 进行三维可视化和点云处理时有时需要将当前的视角Camera Viewpoint保存下来以便下次再次打开时能够还原到同样的视角。本文将演示如何在最新的 Open3D GUI 界面o3d.visualization.gui / o3d.visualization.O3DVisualizer中实现这一功能并展示完整示例代码及运行效果。 2. 环境准备 Python 版本3.xOpen3D 版本0.15 或 0.16支持新的 GUI其他依赖Numpy 如果你使用的是 pip 安装确保安装最新的 Open3D pip install --upgrade open3d3. 实现思路 在 Open3D 中相机视角主要由**内参Intrinsic和外参Extrinsic**两个部分组成。 内参Intrinsic描述相机的焦距fx, fy和主点坐标cx, cy。外参Extrinsic描述世界坐标系到相机坐标系的变换关系包含旋转和平移。 由于 Open3D 内部在新的 GUI 中使用了 OpenGL 风格的坐标系因此需要进行一次坐标变换。文中使用了一个 ToGLCamera 矩阵与其逆矩阵来做坐标系之间的转换。 当我们在 O3DVisualizer 中查看点云并进行旋转、平移等操作时可以通过 vis.scene.camera.get_model_matrix() 获取到对应的模型矩阵model matrix然后再转换为外参矩阵extrinsic。最后我们把这些参数序列化用 pickle存储起来之后就可以再读取并还原相机的视角。 4. 关键函数解析 4.1 model_matrix_to_extrinsic_matrix(model_matrix) def model_matrix_to_extrinsic_matrix(model_matrix):return np.linalg.inv(model_matrix FromGLGamera)这里 model_matrix 来自 vis.scene.camera.get_model_matrix()。由于 Open3D GUI 中的相机使用了与传统坐标系不同的变换需要先右乘一个 FromGLGameraToGLCamera 的逆矩阵然后对结果取逆才能得到最终的外参矩阵。 4.2 create_camera_intrinsic_from_size(width, height, hfov, vfov) def create_camera_intrinsic_from_size(width1024, height768, hfov60.0, vfov60.0):fx (width / 2.0) / np.tan(np.radians(hfov)/2)fy (height / 2.0) / np.tan(np.radians(vfov)/2)return np.array([[fx, 0, width / 2.0],[0, fy, height / 2.0],[0, 0, 1]])该函数根据窗口的宽度 width、高度 height 以及水平和垂直视角hfov, vfov来计算焦距。其中 (width / 2) / tan(hfov / 2) 的含义是根据给定视场角和图像尺寸来估计相机焦距。最终返回一个 3×3 的内参矩阵。 4.3 save_view(vis, fnamesaved_view.pkl) def save_view(vis, fnamesaved_view.pkl):try:model_matrix np.asarray(vis.scene.camera.get_model_matrix())extrinsic model_matrix_to_extrinsic_matrix(model_matrix)width, height vis.size.width, vis.size.heightintrinsic create_camera_intrinsic_from_size(width, height)saved_view dict(extrinsicextrinsic, intrinsicintrinsic, widthwidth, heightheight)with open(fname, wb) as pickle_file:dump(saved_view, pickle_file)except Exception as e:print(e)获取当前相机的模型矩阵并转换成外参矩阵 extrinsic。读取当前窗口大小计算内参矩阵 intrinsic。将外参、内参、窗口大小一起打包到一个字典 saved_view 里并用 pickle 序列化保存到文件。 4.4 load_view(vis, fnamesaved_view.pkl) def load_view(vis, fnamesaved_view.pkl):try:with open(fname, rb) as pickle_file:saved_view load(pickle_file)vis.setup_camera(saved_view[intrinsic], saved_view[extrinsic],saved_view[width], saved_view[height])except Exception as e:print(Cant find file, e)反序列化读取之前保存的 intrinsic、extrinsic 和窗口大小信息。调用 vis.setup_camera(...) 还原相机视角。 5. 完整示例代码 下面贴出完整的示例代码供参考假设文件名为 demo_save_load_view.py。代码中已经包含了上述四个关键函数并演示了如何加载点云、如何在 GUI 中添加菜单项来保存/加载视角以及如何在程序启动后自动加载之前保存的视角并截图保存。 import numpy as np import open3d as o3d import open3d.visualization.gui as gui from pickle import load, dumpToGLCamera np.array([[1, 0, 0, 0],[0, -1, 0, 0],[0, 0, -1, 0],[0, 0, 0, 1] ]) FromGLGamera np.linalg.inv(ToGLCamera)def model_matrix_to_extrinsic_matrix(model_matrix):return np.linalg.inv(model_matrix FromGLGamera)def create_camera_intrinsic_from_size(width1024, height768, hfov60.0, vfov60.0):fx (width / 2.0) / np.tan(np.radians(hfov)/2)fy (height / 2.0) / np.tan(np.radians(vfov)/2)return np.array([[fx, 0, width / 2.0],[0, fy, height / 2.0],[0, 0, 1]])def save_view(vis, fnamesaved_view.pkl):try:model_matrix np.asarray(vis.scene.camera.get_model_matrix())extrinsic model_matrix_to_extrinsic_matrix(model_matrix)width, height vis.size.width, vis.size.heightintrinsic create_camera_intrinsic_from_size(width, height)saved_view dict(extrinsicextrinsic, intrinsicintrinsic, widthwidth, heightheight)with open(fname, wb) as pickle_file:dump(saved_view, pickle_file)print(fView saved to {fname})except Exception as e:print(e)def load_view(vis, fnamesaved_view.pkl):try:with open(fname, rb) as pickle_file:saved_view load(pickle_file)vis.setup_camera(saved_view[intrinsic], saved_view[extrinsic],saved_view[width], saved_view[height])print(fView loaded from {fname})except Exception as e:print(Cant find file, e)def main():gui.Application.instance.initialize()vis o3d.visualization.O3DVisualizer(Demo to Load a Camera Viewpoint for O3DVisualizer, 1920, 1080)# 添加窗口gui.Application.instance.add_window(vis)# 设置一些可视化参数vis.point_size 8vis.show_axes True# 在菜单中添加保存和加载相机视角的选项vis.add_action(Save Camera View, save_view)vis.add_action(Load Camera View, load_view)# 调整一些可视化效果vis.point_size 4 vis.show_axes False vis.show_skybox(False)# 读取并添加点云到可视化pcd o3d.io.read_point_cloud(/10.pcd)vis.add_geometry(Random Point Cloud, pcd)# 延迟加载视角def load_view_delayed():load_view(vis, saved_view.pkl)gui.Application.instance.post_to_main_thread(vis, load_view_delayed)# 延迟一秒后截图def take_screenshot():import timetime.sleep(1) vis.export_current_image(screenshot.png)print(Screenshot saved to screenshot.png)gui.Application.instance.post_to_main_thread(vis, take_screenshot)gui.Application.instance.run()if __name__ __main__:main()6. 使用方法 确保安装好 Open3D最好是最新版本并将上面的代码保存为 demo_save_load_view.py。修改点云文件路径将 pcd o3d.io.read_point_cloud(/path/to/your.pcd) 替换为你自己的点云文件路径。运行脚本python demo_save_load_view.py首次运行时如果本地没有 saved_view.pkl 文件会提示找不到文件你可以手动在菜单里选择 Actions - Save Camera View 来保存当前视角。下次再运行脚本时程序会自动执行 load_view_delayed()从上次保存的 saved_view.pkl 中加载相机视角并在 1 秒后截图。 7. 总结 通过本文示例我们可以看到在新的 Open3D GUIO3DVisualizer中保存并还原相机视角的核心思路就是 获取当前相机的 model_matrix结合一个与 OpenGL 坐标系相关的转换矩阵计算出外参根据窗口大小和视场角生成内参将这些数据保存到文件日后可以轻松加载还原相机视角。 这样就能方便地在多次打开程序或者不同机器上还原同一个观察视角。希望这篇文章能给你在使用 Open3D 的项目中带来帮助。
http://www.hkea.cn/news/14502765/

相关文章:

  • 建设什么网站挣钱用jsp和mysql做网站
  • 多个网站给一个网站推广百度竞价广告代理
  • 网站建设 博采网络 学校php cms
  • 网站的结构与布局优化网站建设方案书 5个备案
  • 奇葩网站100个卓越高职院建设网站
  • 建设银行网站查询房贷信息网页编辑哪个键
  • 网站改版如何做301网站建设解决方案服务商
  • 网站icp备案网址互联网推广品牌
  • 东莞高端品牌网站建设网址大全123上网导航
  • 网站建设需要金额默认网站停止
  • 谁能给我一个网站谢谢河南app软件开发价位
  • 哪个网站可以做兼职讲师虚拟资源交易平台Wordpress源码
  • 色弱可以做网站开发吗免费企业网站开发
  • 云南省玉溪市建设局官方网站家居网站建设行业现状
  • 网站做sem推广时要注意什么网站建设系统服务机构
  • 成都网站建设新闻wordpress网站投放广告
  • 做商城网站的流程外贸网站谷歌seo
  • 潍坊网站空间公司装修设计
  • 关于asp.net的网站模板seo国外英文论坛
  • 两个男生如何做网站网站开发需要多少钱销售
  • 强化网站建设网站开发实战 课程
  • 做外贸的网站开店流程两学一做山东网站
  • 单县网站建设潍坊做网站教程
  • 网站 虚拟目录软件工程师证书有用吗
  • 无锡 做网站东莞哪家公司做网站好
  • 有哪些做的好看的网站惠城发布最新通知
  • 内蒙古网站建设电话织梦小学网站模板
  • 猪八戒网做网站桐乡做网站
  • 电子商务网站建设实用教程微信公众平台开发者文档
  • 网站英文版怎么做WordPress标签图像