Open3d 获取渲染和固定视角json文件及读入
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文件及读入相关推荐
- Dmc雷赛板卡仿写(六):数据在程序中的保存与读取 ,类变量读写,json文件数据读入,ini文件数据读入
1.类变量读入(之前类的学习中写过) //在.h中实例化了这些类using AxisName = QString;using AxisHash = QMap<AxisName, DmcAxis* ...
- 乡镇级echarts地图json获取、各省市区地图json文件
转载原文地址:https://blog.csdn.net/weixin_44861708/article/details/114223258 省市区地图json 链接:https://pan.baid ...
- AngularJS获取项目中定义的json文件
项目结构: 文件夹js位于根路径下 1 $http.get('js/app/contact/contacts.json').then(function (res) { 2 /*下面就是获取到的数据*/ ...
- js获取json文件内容
搞了很久才搞出来,一定要记一下这次 创建两个js文件,获取两个不同的json文件,就可以导入两个json文件数据,欢迎大家给予更好的建议谢谢 js文件 //get_g1.js function f1( ...
- echarts地图坐标系及多个省份json文件的合并
安装echarts yarn add echarts 获取省市区数据来源的json文件 datav使用的是高德坐标系,即国测局坐标(GCJ-02).对于GPS,即WSG84坐标系经纬度需要转GCJ-0 ...
- vue 项目如何读取本地json文件数据
在项目根目录有一个static文件夹目录,将所需要的json文件放在该static目录下,使用axios发起get请求获取对应的json文件数据 import axios from 'axios' / ...
- python处理json文件_python处理json文件
广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! python类型转换json类型的对应关系? json类型转换到python的类 ...
- 动态获取本地json文件,渲染为表格-前端html+css+javascript,nth-child选择器,实时浏览插件,vscode,ajax
从本地获取到json文件,并进行动态的渲染demo来啦~ 此文章对table表格,nth-child()选择器,插入html标签做的小demo,大佬请绕道,感兴趣的uu可以安心"食用&quo ...
- Echarts读取本地json文件渲染轨迹,亲测ok
Echarts读取本地json文件渲染轨迹,亲测ok 1. 报错及解决 2. 效果图 3. 源码lines-track.html如下 参考 1. 报错及解决 报错:由于浏览器的同源策略 已拦截跨源请求 ...
最新文章
- CentOS7下配置bacula-web
- request对象方法详解
- JAVA并发编程: CAS和AQS
- Opportunity update implementation in backend
- LLVM4更新--简化对象定义
- Chrome OS 70 发布:这是安卓的私生子吗?
- 20155222 卢梓杰 myod
- 图片清晰度识别之改进ssim算法
- Python之文章生成器(升级版,也就是更傻瓜式运行)
- 各种语音编码方法,所需要的带宽
- Mac使用技巧:关闭系统自动更新
- [IT学习]阿铭Linux 微信公众号 每日一题 解析
- SFTP上传本地文件报错找不到文件或路径
- serialize()方法
- matlab怎么调用filter函数,如何在matlab中建立和调用filter函数
- 计算机二级要学的函数有哪些,计算机二级ms office中excel中必考函数有哪些?
- Qt: 判断字符串是否为数字,是否为整数
- 编程时java找不到文件_java.io.FileNotFoundException:系统找不到指定的文件
- 读何敬才同志的哀祭诗
- efi linux win10,WIN10+UBUNTU15.04 kylin(EFI+GPT)