目录

  • 1.保存视角参数
  • 2.加载pcd文件及视角转换

1.保存视角参数

save_view_point和load_view_point函数用于将所需视角下的参数写入到json文件。

import open3d as o3ddef save_view_point(pcd, filename):vis = o3d.visualization.Visualizer()vis.create_window(window_name='pcd', width=800, height=600)vis.add_geometry(pcd)vis.run()  # user changes the view and press "q" to terminateparam = vis.get_view_control().convert_to_pinhole_camera_parameters()o3d.io.write_pinhole_camera_parameters(filename, param)vis.destroy_window()def load_view_point(pcd, filename):vis = o3d.visualization.Visualizer()vis.create_window(window_name='pcd', width=800, height=600)ctr = vis.get_view_control()param = o3d.io.read_pinhole_camera_parameters(filename)vis.add_geometry(pcd)ctr.convert_from_pinhole_camera_parameters(param)vis.run()vis.destroy_window()if __name__ == "__main__":pcd = o3d.io.read_point_cloud("road.pcd")   #传入自己当前的pcd文件save_view_point(pcd, "viewpoint.json")  #保存好得json文件位置load_view_point(pcd, "viewpoint.json")  #加载修改时较后的pcd文件

运行此段代码,并进行调整视角。

2.加载pcd文件及视角转换

该脚本读取上面设置好的视角参数,在固定背景点云中遍历显示pcd文件(没有背景pcd得可以将背景部分注释掉)

import open3d as o3d
import os
import numpy as np
import timedef vis_pcd(pcd_path,road_pcd,json_path):# 初始化窗口vis = o3d.visualization.Visualizer()vis.create_window(window_name='pcd', width=800, height=600)# 可视化参数设置opt = vis.get_render_option()# 设置背景色opt.background_color = np.asarray([0, 0, 0])# 设置点云大小opt.point_size = 2opt.show_coordinate_frame = True# 读取viewpoint参数param = o3d.io.read_pinhole_camera_parameters(json_path)ctr = vis.get_view_control()# 转换视角ctr.convert_from_pinhole_camera_parameters(param)# 创造pcd类型数据pointcloud = o3d.geometry.PointCloud()road_pc = o3d.geometry.PointCloud()# 加载背景点云road = o3d.io.read_point_cloud(road_pcd)# 转为numpy格式road = np.asarray(road.points).reshape((-1, 3))road_pc.points = o3d.utility.Vector3dVector(road)# 调整点云颜色road_pc.paint_uniform_color([0,1,0])vis.add_geometry(road_pc)to_reset = True# 读取点云文件加中文件名files = os.listdir(pcd_path)# t0 = time.time()for f in files:# t1 = time.time()# 加载点云文件pcd = o3d.io.read_point_cloud(pcd_path + f)# 设置休眠时间time.sleep(0.2)# 转换数据格式pcd = np.asarray(pcd.points).reshape((-1, 3))pointcloud.points = o3d.utility.Vector3dVector(pcd)# 调整点云颜色pointcloud.paint_uniform_color([1, 0, 0])vis.update_geometry(pointcloud)vis.add_geometry(pointcloud)ctr.convert_from_pinhole_camera_parameters(param)# t2 = time.time()# print("time:",(t2-t1))if to_reset:vis.reset_view_point(True)to_reset = Falsevis.poll_events()vis.update_renderer()# t3 = time.time()# print("all time:",t3-t0)
if __name__ == '__main__':vis_pcd("./data/pcd/",“road.pcd”,“viewpoint.json”)#参数1:存放pcd点云得文件夹,参数2:背景pcd,参数3:视角json文件

viewpoint.json内部信息如下:

是一些坐标变换的参数

{"class_name" : "PinholeCameraParameters","extrinsic" : [-0.14235490862151962,-0.8290631685657337,-0.54073037876478225,0.0,-0.9067732196814059,0.32826468205903769,-0.26458387437879843,0.0,0.39685943110876892,0.45265501327216623,-0.7985023674978049,0.0,-35.991682946262912,29.330172681787637,35.281692583343712,1.0],"intrinsic" : {"height" : 600,"intrinsic_matrix" : [519.6152422706632,0.0,0.0,0.0,519.6152422706632,0.0,399.5,299.5,1.0],"width" : 800},"version_major" : 1,"version_minor" : 0
}

open3d连续读取pcd文件及实现点云视角转换相关推荐

  1. Matlab 读取 pcd 文件

    Matlab 读取 pcd 文件 使用 matlab 读取 pcd 文件,代码如下: % 读取 pcd 文件,并取出 xyz 坐标 ptCloud = pcread('table.pcd'); % 可 ...

  2. Matlab 读取 pcd 文件转ply并显示

    1.MATLAB读取pcd文件 % 读取 pcd 文件,并取出 xyz 坐标 ptCloud = pcread('table.pcd'); % 可视化显示当前 pcd 文件 pcshow(ptClou ...

  3. 三维目标检测:(一)制作自己的ModelNet数据集(1.读取pcd文件为numpy数组)

    Python读取pcd文件为numpy数组 pcd文件的格式 读取pcd文件存储到numpy数组中 补充 pcd文件的格式 1.第二行:每行数据的内容 可能是(X Y Z R G B)或者(X Y Z ...

  4. PCD文件格式详解及在PCL下读取PCD文件

    一.PCD简介 1.1 PCD版本 在点云库PCL 1.0发布之前,PCD文件格式就已经发展更新了许多版本.这些新旧不同的版本用PCD_Vx来编号(例如PCD_V5.PCD_V6和PCD_V7等),分 ...

  5. python读取pcd文件_PCD文件格式转换脚本

    标签: 在写一个重建算法的时候需要用到点坐标和法向的数据文件,于是向利用pcl中的法向计算模块来生成法向.输出后法向文件中包含曲率信息,但是这是不需要的.于是自己写了一个python小脚本实现格式转换 ...

  6. 使用python-open3d读取pcd,bin格式的点云,并显示

    open3d读取pcd格式点云 def read_display_pcd_pc(path):pcd=open3d.io.read_point_cloud(path)# 设置点云颜色 只能是0 1 如[ ...

  7. stm32开发3D打印机(六)——使用FATFS文件系统读取打印文件 获取信息 执行转换 转换坐标(上)

    这篇文章为读取打印文件(后缀为gcode的文件),并添加USMART功能调试 因为TFATFS移植与USMATRT没有什么好写的,而且在下方的链接:正点原子教程已经有详细的教程了,所以跳过了TATFS ...

  8. axure读取服务器文件,Axure教程|云盘案例原型:文件管理

    今天和大家分享一个后台文件管理demo,包括图片管理.视频管理.音乐管理.文档管理和其它文件管理.这个demo也可以看做云盘.网盘的demo. 该原型交互效果齐全,使用也简单,只需要填写中继器表格即可 ...

  9. pandas读取csv文件,变换文件格式,并转换成numpy数组,取出数据

    视频 https://www.bilibili.com/video/BV1jK4y187yB?p=39 代码 #!/usr/bin/env python # -*- encoding: utf-8 - ...

最新文章

  1. 网络端口的转发和重定向
  2. 精品思维导图,流程图模板分享
  3. alluxio源码解析-层次化存储(4)
  4. BZOJ3569: DZY Loves Chinese II(线性基构造)
  5. python3导入特定的成员
  6. 回顾2017系列篇(二):移动端APP设计趋势
  7. 算法解读:基本的算法
  8. 2018年3月11日论文阅读
  9. android:digits 代码设置,EditText中android:digits失效问题
  10. 基于Otsu算法的图像分割
  11. 中国智能经济觉醒,云智一体打造产业智能化加速器
  12. ElasticSearch系列十:ElasticSearch搜索技术深入讲解之搜索模板,搜索建议和地理位置搜索
  13. 树莓派介绍树莓派3代B+型开发板
  14. 美国大学计算机科学博士生排名,usnews美国大学研究生计算机科学专业完整排名...
  15. python画玫瑰花(含文字)
  16. springboot引入rabbit mq
  17. 湘鄂情资源独具 大数据转型可期
  18. autojs用签名校验保护app
  19. 西门子s7 200smart与台达变频器通讯 目标:用触摸屏和西门子smart 控制变频器通讯
  20. android实现地图api公交线路查询,android实现查询公交车还有几站的功能

热门文章

  1. matplotlib——在 Jupyter Notebook中绘制图像时只显示变量信息不显示图片
  2. 深度学习————如何在Python中求解函数的解析表达式
  3. 2018今日头条大数据方向笔试题
  4. 2018阿里编程测验题:最短汉密尔顿回路
  5. GO语言中的几个关键思想
  6. CPU中的Little Endian与Big Endian
  7. 命令行模式下编译多个C/C++源文件
  8. CodeBlocks常用快捷键
  9. 敏捷开发一千零一问系列之十四:敏捷开发加班吗?
  10. win10 sshsecureshellclient删除profile保存的信息