open3d-点云读写和显示

这篇具有很好参考价值的文章主要介绍了open3d-点云读写和显示。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

一,点云读取

二,点云写入

二,点云显示

三、 open3d支持如下点云文件类型

​四、代码及结果示例


一,点云读取

read_point_cloud(filename, format='auto', remove_nan_points=True, remove_infinite_points=True, print_progress=False): 

参数:

  • filename (str): 点云文件路径
  • format (str, optional, default='auto'): 输入文件格式filehe的路径。 如果未指定或设置为“auto”,则从文件扩展名推断格式 
  • remove_nan_points (bool, optional, default=False): 如果True,所有包含NaN的点都将从PointCloud中删除。 
  • remove_infinite_points (bool, optional, default=False): 如果为True,所有包含无限值的点都将从PointCloud中删除 
  • print_progress (bool, optional, default=False): 如果设置为true,控制台中会显示一个进度条 

返回:

  • open3d.geometry.PointCloud

默认情况下,Open3D尝试通过文件名扩展名推断文件类型。

pcd = o3d.io.read_point_cloud("../../test_data/my_points.txt", format='xyz')

也可以显式地指定文件类型。 在这种情况下,文件扩展名将被忽略。

二,点云写入

write_point_cloud(filename, pointcloud, write_ascii=False, compressed=False, print_progress=False)

参数:

  •    filename (str): 点云文件保存路径名.
  •    pointcloud (open3d.geometry.PointCloud): 目标点云
  •     compressed (bool, optional, default=False): 设置为' ' True ' '以压缩格式写入。 
  •     print_progress (bool, optional, default=False):如果设置为true,控制台中会显示一个进度条 

返回:

  • bool类型

保存一个点云(o3d.pcd)到本地文件

二,点云显示

draw_geometries(window_name='Open3D', width=1920, height=1080, left=50, top=50, point_show_normal=False, mesh_show_wireframe=False, mesh_show_back_face, *args, **kwargs):

参数:

  • geometry_list (List[open3d.geometry.Geometry]): 可视化点云列表。
  • window_name (str, optional, default='Open3D'): 可视化窗口名称。
  • width (int, optional, default=1920): 可视化窗口宽
  • height (int, optional, default=1080): 可视化窗口高
  • left (int, optional, default=50): 可视化窗口左边距
  • top (int, optional, default=50): 可视化窗口上边距
  • point_show_normal (bool, optional, default=False):  如果设置为True,可视化点的法向量。
  • mesh_show_wireframe (bool, optional, default=False): 如果设置为true,可视化网格线框。
  • mesh_show_back_face (bool, optional, default=False): 可视化网格三角形背面。

返回:

  • None

三、 open3d支持如下点云文件类型

Format

Description

xyz

每行包含[x, y, z], 其中 xyz 分别是三维坐标

xyzn

每行包含[x, y, z, nx, ny, nz], 其中 nxnynz 是法向量

xyzrgb

每行包含 [x, y, z, r, g, b], 其中rgb 是[0, 1]的float数据

pts

第一行是点数. 接下来的行遵循如下其中一种格式:[x, y, z, i, r, g, b][x, y, z, r, g, b][x, y, z, i] or [x, y, z], 其中xyzi 是 double类型 ,rgb 是 uint8类型

ply

见 多边形格式, ply文件可以包含点云和mesh网格数据

pcd

见 点云数据

​四、代码及结果示例

import open3d as o3d
import numpy as np

print("Load a ply point cloud, print it, and render it")
# ply_point_cloud = o3d.data.PLYPointCloud()
plyname = r'fragment.ply'
#读点云
pcd = o3d.io.read_point_cloud(plyname)
print(pcd)
print(np.asarray(pcd.points))
#点云显示
o3d.visualization.draw_geometries([pcd],
                                  zoom=0.3412,
                                  front=[0.4257, -0.2125, -0.8795],
                                  lookat=[2.6172, 2.0475, 1.532],
                                  up=[-0.0694, -0.9768, 0.2024])
#保存点云
o3d.io.write_point_cloud("save.pcd", pcd)

open3d-点云读写和显示文章来源地址https://www.toymoban.com/news/detail-439462.html

到了这里,关于open3d-点云读写和显示的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 在PyQt5窗口中嵌入open3d窗口显示点云图形

     本文方法来自:PYQT5内嵌外部exe程序(win7)_pyqt5嵌入外部窗口_这杯可乐有点甜的博客-CSDN博客 open3d在绘制点云等图形时,通常需要创建一个窗口。本文实现了将open3d创建的窗口显示在Qt窗口内,以便于后续通过Qt控件和槽函数调用open3d强大的绘图和处理功能。 运行结果如下

    2024年02月06日
    浏览(211)
  • open3d,读取stl/ply/obj/off/gltf/glb三维模型,并转换成点云,保存

    可以自己用建模软件建立一个模型 本案例使用模型的下载地址 可以从free3d免费下载,无需注册 效果: 效果: 均匀采样会在表面出现采样点聚集的现象,open3d实现了一种基于poisson_disk方法的采样,能实现表面的均匀采样 原理 :参数umber_of_points是最终采样的点数量,实际会先

    2024年02月11日
    浏览(62)
  • Python: 用open3D库,连续多帧显示点云(查看localization pose的好坏)

    连续多帧显示点云,需要 点云文件 和 定位信息(IMU惯导信息),我这里是从bag包里面自己解析出来的定位信息,因为是自己写的节点,所以直接从代码里面跑出来的,不是ros官方定义的,所以没有用官方给出的方法 总体思路: 将每一帧点云和旋转矩阵进行 时间对齐 -----

    2023年04月11日
    浏览(46)
  • 基于Open3D的点云处理17-Open3d的C++版本

    http://www.open3d.org/docs/latest/cpp_api.html http://www.open3d.org/docs/latest/getting_started.html#c http://www.open3d.org/docs/release/cpp_project.html#cplusplus-example-project https://github.com/isl-org/open3d-cmake-find-package https://github.com/isl-org/open3d-cmake-external-project https://github.com/isl-org/Open3D/releases Note: -DBUILD_SHARED_LIBS

    2024年02月09日
    浏览(63)
  • Open3D点云处理

    Open3D is an open-source library that supports rapid development of software that deals with 3D data. The Open3D frontend exposes a set of carefully selected data structures and algorithms in both C++ and Python. The backend is highly optimized and is set up for parallelization. Open3D是一个支持3D数据处理软件快速开发的开源库,在前端提供

    2023年04月17日
    浏览(58)
  • open3d点云平移

    功能简介 open3d中点云的平移函数为:pcd.translate((tx, ty, tz), relative=True)。当relative为True时,(tx, ty, tz)表示点云平移的相对尺度,也就是平移了多少距离。当relative为False时,(tx, ty, tz)表示点云中心(质心)平移到的指定位置。质心可以坐标可以通过pcd.get_center()得到。 代码

    2024年01月22日
    浏览(81)
  • Open3d点云对象详解

    PointCloud 是open3d中用于点云处理的类,封装了包括几何变换、数据滤波、聚类分割等一系列实用算法。如无特别说明,本例中所有例程均基于斯坦福兔子的点云模型,下载地址:斯坦福标准模型 读取和清除点云 一般点云数据的读取方法属于 open3d.io 的内容,但点云类也提供了

    2023年04月19日
    浏览(87)
  • Open3D点云数据处理(一):VSCode配置python,并安装open3d教程

    专栏地址:https://blog.csdn.net/weixin_46098577/category_11392993.html 在很久很久以前,我写过这么一篇博客,讲的是open3d点云处理的基本方法。👇 当时是 PyCharm + Anaconda + python3.8 + open3d 0.13 已经是2023年了,现在有了全新版本。目前python由当年的3.8更新到了3.11版本,open3d也从0.13来到了

    2024年02月07日
    浏览(65)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包