1. Open3d的渲染交互

在使用open3d对点云进行可视化,使用一个自己喜欢的渲染风格是很有必要的,open3d提供了一个调节渲染的方法,当你运行程序,打开open3d的窗口,鼠标点击窗口,按H就会弹出,交互命令的帮助,如下图所示:

上面的命令有些多,大家可以对照英文意思去使用,个人觉得比较立竿见影的就是 – Color control – 部分,大家可以自己试一试,我比较喜欢Color map options。open3d这个库有一个很大的问题,就是他的render mode control 里面的增加线宽暂不好用,如果好用了请通知我。

保存渲染结果到json文件中

当调整好渲染风格后,可以按O键获取当前的渲染设置

保存渲染图片

当你调整好后,想要保存图片按P就可以截取当前的窗口图片
剩余的功能大家自己探索

2.获取视角json文件

通过如下代码就可以获取视角json文件

import os
import numpy as np
import struct
import open3d
import timefrom open3d import visualizationdef read_bin_velodyne(path):pc_list = []with open(path, 'rb') as f:content = f.read()pc_iter = struct.iter_unpack('ffff', content)for idx, point in enumerate(pc_iter):pc_list.append([point[0], point[1], point[2]])return np.asarray(pc_list, dtype=np.float32)def save_view_point(pcd, filename):vis = visualization.Visualizer()vis.create_window(window_name='pcd', width=1440, height=1080)vis.add_geometry(pcd)vis.get_render_option().load_from_json('renderoption.json')vis.run()  # user changes the view and press "q" to terminateparam = vis.get_view_control().convert_to_pinhole_camera_parameters()open3d.io.write_pinhole_camera_parameters(filename, param)# vis.destroy_window()def load_view_point(pcd, filename):vis = visualization.Visualizer()vis.create_window(window_name='pcd', width=1440, height=1080)ctr = vis.get_view_control()param = open3d.io.read_pinhole_camera_parameters(filename)vis.add_geometry(pcd)vis.get_render_option().load_from_json('renderoption.json')ctr.convert_from_pinhole_camera_parameters(param)vis.run()vis.destroy_window()if __name__ == "__main__":example = read_bin_velodyne("data\\object\\training\\velodyne\\000010.bin")  # 传入自己当前的pcd文件pcd = open3d.geometry.PointCloud()pcd.points = open3d.utility.Vector3dVector(example)save_view_point(pcd, "BV_1440.json")  # 保存好得json文件位置load_view_point(pcd, "BV_1440.json")  # 加载修改时较后的pcd文件

成功获取需要的json文件需要注意2点

  • 传入一张pcd文件,注意路径不易出错
  • 视角的json文件需要跟你可视化的窗口的尺寸对应上,才有效,
    尺寸分别在load_view_point函数和save_view_point函数第二行

3.在代码中读入视角json和渲染json

这是我之前博客的代码加载的示范,可以看那篇文章整体的使用情况。

def draw_3dframeworks(vis,points):position = pointspoints_box = np.transpose(position)lines_box = np.array([[0, 1], [1, 2], [0, 3], [2, 3], [4, 5], [4, 7], [5, 6], [6, 7],[0, 4], [1, 5], [2, 6], [3, 7], [0, 5], [1, 4]])colors = np.array([[1., 0., 0.] for j in range(len(lines_box))])line_set = o3d.geometry.LineSet()line_set.points = o3d.utility.Vector3dVector(points_box)line_set.lines = o3d.utility.Vector2iVector(lines_box)line_set.colors = o3d.utility.Vector3dVector(colors)render_option.line_width = 5.0vis.update_geometry(line_set)render_option.background_color = np.asarray([1, 1, 1])# vis.get_render_option().load_from_json('renderoption_1.json')render_option.point_size = 4#param = o3d.io.read_pinhole_camera_parameters('BV.json')print(render_option.line_width)ctr = vis.get_view_control()vis.add_geometry(line_set)#ctr.convert_from_pinhole_camera_parameters(param)vis.update_geometry(line_set)vis.update_renderer()
————————————————
版权声明:本文为CSDN博主「多好的天啊」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_44491667/article/details/120960701

对应的API为如下所示。

    vis.get_render_option().load_from_json('renderoption_1.json')param = o3d.io.read_pinhole_camera_parameters('BV.json')

通过以上操作就可以获得比较美观的可视化效果了:

通过如上方法就可以实现,对渲染效果和视角进行固定,保证你产出的图片是同一风格。如果要动态的显示点云,固定视角是必不可少的。

Open3d 获取渲染和固定视角json文件及读入相关推荐

  1. Dmc雷赛板卡仿写(六):数据在程序中的保存与读取 ,类变量读写,json文件数据读入,ini文件数据读入

    1.类变量读入(之前类的学习中写过) //在.h中实例化了这些类using AxisName = QString;using AxisHash = QMap<AxisName, DmcAxis* ...

  2. 乡镇级echarts地图json获取、各省市区地图json文件

    转载原文地址:https://blog.csdn.net/weixin_44861708/article/details/114223258 省市区地图json 链接:https://pan.baid ...

  3. AngularJS获取项目中定义的json文件

    项目结构: 文件夹js位于根路径下 1 $http.get('js/app/contact/contacts.json').then(function (res) { 2 /*下面就是获取到的数据*/ ...

  4. js获取json文件内容

    搞了很久才搞出来,一定要记一下这次 创建两个js文件,获取两个不同的json文件,就可以导入两个json文件数据,欢迎大家给予更好的建议谢谢 js文件 //get_g1.js function f1( ...

  5. echarts地图坐标系及多个省份json文件的合并

    安装echarts yarn add echarts 获取省市区数据来源的json文件 datav使用的是高德坐标系,即国测局坐标(GCJ-02).对于GPS,即WSG84坐标系经纬度需要转GCJ-0 ...

  6. vue 项目如何读取本地json文件数据

    在项目根目录有一个static文件夹目录,将所需要的json文件放在该static目录下,使用axios发起get请求获取对应的json文件数据 import axios from 'axios' / ...

  7. python处理json文件_python处理json文件

    广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! python类型转换json类型的对应关系? json类型转换到python的类 ...

  8. 动态获取本地json文件,渲染为表格-前端html+css+javascript,nth-child选择器,实时浏览插件,vscode,ajax

    从本地获取到json文件,并进行动态的渲染demo来啦~ 此文章对table表格,nth-child()选择器,插入html标签做的小demo,大佬请绕道,感兴趣的uu可以安心"食用&quo ...

  9. Echarts读取本地json文件渲染轨迹,亲测ok

    Echarts读取本地json文件渲染轨迹,亲测ok 1. 报错及解决 2. 效果图 3. 源码lines-track.html如下 参考 1. 报错及解决 报错:由于浏览器的同源策略 已拦截跨源请求 ...

最新文章

  1. CentOS7下配置bacula-web
  2. request对象方法详解
  3. JAVA并发编程: CAS和AQS
  4. Opportunity update implementation in backend
  5. LLVM4更新--简化对象定义
  6. Chrome OS 70 发布:这是安卓的私生子吗?
  7. 20155222 卢梓杰 myod
  8. 图片清晰度识别之改进ssim算法
  9. Python之文章生成器(升级版,也就是更傻瓜式运行)
  10. 各种语音编码方法,所需要的带宽
  11. Mac使用技巧:关闭系统自动更新
  12. [IT学习]阿铭Linux 微信公众号 每日一题 解析
  13. SFTP上传本地文件报错找不到文件或路径
  14. serialize()方法
  15. matlab怎么调用filter函数,如何在matlab中建立和调用filter函数
  16. 计算机二级要学的函数有哪些,计算机二级ms office中excel中必考函数有哪些?
  17. Qt: 判断字符串是否为数字,是否为整数
  18. 编程时java找不到文件_java.io.FileNotFoundException:系统找不到指定的文件
  19. 读何敬才同志的哀祭诗
  20. efi linux win10,WIN10+UBUNTU15.04 kylin(EFI+GPT)

热门文章

  1. Python爬虫实战,QQ音乐爬取全部歌曲
  2. 2022年,计算机保研er选择计科还是软工?
  3. node.js笔记第一天
  4. 普及游戏:小型团队如何赢得大赛
  5. maya为什么不能导出fbx_maya的模型导出为OBJ,然后导入到3dmax后uv全乱了 (导出FBX更不行,导出的FBX文件放max里面基本没面了)...
  6. 腾讯滑块JS破解/本地识别DLL
  7. c++primer第十六章模板特例化
  8. 你与顶级UI设计师的区别在哪里
  9. 攻防世界——web高手进阶区题解
  10. linux cpu使用率计算