Open3D学习笔记

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

Open3D是一个开源库,它支持处理3D数据的软件的快速开发。Open3D前端在C++和Python中有一些公开的数据结构和算法。后端经过高度优化,并设置为并行化。

PCL也是3D点云数据处理的优秀开源库,在C++平台上表现较好,但是在Python上python-pcl长时间不更新,维护少,不太好用,不建议使用。

Open3D由Intel发布,效率很快,python版本的库也很友好,python环境下建议使用!

1. 安装与引用

1.1. 安装

pip install open3d

1.2. 引用

import open3d as o3d

2. 读写数据

2.1. 读取数据o3d.io.read_point_cloud

参数

Format Description
xyz 每一行包括 [x,y,z] 三个值,x,y,z 是三维坐标
xyzn 每一行包括 [x,y,z,nx,ny,nz] 六个值,其中nx,ny,nz 是法线
xyzrgb 每一行包括 [x,y,z,r,g,b] 六个值,这里r,g,b的范围在[0,1]的浮点数
pts 第一行是一个整数,表示点的个数,之后的每一行可以是下列格式之一:[x, y, z, i, r, g, b], [x, y, z, r, g, b], [x, y, z, i] or [x, y, z],其中x,y,z和i是double类型,r,g,b是uint8类型。
ply 这个格式可以包含点云和网格数据,可以参考链接
pcd Point Cloud Data

示例

#忽略.txt格式,读取的格式为xyz
pcd =o3d.io.read_point_cloud("my_points.txt",format='xyz')

3. 格式转换

3.1. 从open3d.PointCloud转为NumPy

如这个例程所示,Vector3dVector类型的pcd_load.points通过np.asarray直接转化为NumPy数组.

# Load saved point cloud and visualize it
pcd_load = o3d.io.read_point_cloud("TestData/sync.ply")

# convert Open3D.o3d.geometry.PointCloud to numpy array
xyz_load = np.asarray(pcd_load.points)
print('xyz_load')
print(xyz_load)
o3d.visualization.draw_geometries([pcd_load])

3.2. 从NumPy转为open3d.PointCloud

Open3d提供了从NumPy矩阵到3D向量的转换.使用Vector3dVector,能够直接将一个NumPy矩阵变为open3d.PointCloud.points.
通过这种方式,所有类似的数据结构比如open3d.PointCloud.colors 或 open3d.PointCloud.normals,都能直接使用NumPy赋值或者修改.以下代码将点云保存为ply格式以供下一步使用.

# Pass xyz to Open3D.o3d.geometry.PointCloud and visualize
pcd = o3d.geometry.PointCloud()
pcd.points = o3d.utility.Vector3dVector(xyz)
pcd.colors = o3d.utility.Vector3dVector(rgb)
o3d.io.write_point_cloud("TestData/sync.ply", pcd)

4. 可视化

函数o3d.visualization

示例

import open3d as o3d

pcd = o3d.io.read_point_cloud("test_data/fragment.pcd") # 读取pcd文件

print(pcd) #只是简单的打印信息:PointCloud with 113662 points.

#显示,zoom等信息是一些可选项
o3d.visualization.draw_geometries([pcd])
# 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])

# 在同级目录下写入 copy_of_fragment.pcd文件
o3d.io.write_point_cloud("copy_of_fragment.pcd", pcd)

参考文献

python PCL 与OPEN3D - 码农教程

Open3D – A Modern Library for 3D Data Processing

【点云处理技术之open3d】第一篇:open3d的快速安装、简介、文件的读写和可视化操作_非晚非晚的博客-CSDN博客_open3d

Open3d学习计划——11(使用NumPy) - 灰信网(软件开发博客聚合)文章来源地址https://www.toymoban.com/news/detail-427961.html

到了这里,关于Open3D学习笔记的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • Open3D-GUI系列教程(一)创建一个Open3D应用窗口

    本人菜狗一枚,第一次写文章,python懂的也不多,肯定有很多表述存在问题,如有错误请大佬们不吝赐教。 整个open3d的gui我是照着源码里的示例和官方文档摸出来的,因为确实很少有关于这个的教程,官方也没给。所以我顺便整理分享一下。 Open3D官网 官方文档 open3d版本:

    2023年04月13日
    浏览(67)
  • 点云处理库Open3D基础操作1

    欢迎访问个人网络日志🌹🌹知行空间🌹🌹 Open3D 是英特尔公司于 2015 年发布的开源 3D 视觉算法库,截至2023年03月已经更新到了 0.17.0 版本。基于 MIT 协议开源许可。 其后端使用 C++11 实现,经过了高度优化,使用 OpenMP 并行运算优化。通过 Python Pybinding ,其提供前端 Python API

    2024年02月10日
    浏览(40)
  • 『OPEN3D』1.2 mesh处理 python篇

    目录 1.mesh IO与可视化 2.mesh表面法线估计 3.mesh裁减与上色 4. open3d中的utility类和函数 5.me

    2024年02月09日
    浏览(45)
  • 『OPEN3D』1.1 点云处理 python篇

    目录 1.open3d中的点云IO 2.点云的可视化 3 点云voxel下采样 4. 顶点法线估计 5.最小外界矩 6. 凸包计算 7. 点云距离计算 8. DBSCAN clustering聚类 9. RANSAC(Random Sample Consensus)  10. 点云平面分割 11. 隐藏点移除 12.outliers移除 13 最远点采样(Farthest Point Sample) 专栏地址:https://blog.csdn.net/

    2024年02月02日
    浏览(39)
  • 『Open3D』1.10 Tensor数据处理

            open3d中实现了自身的数据类型,用于open3d中内部算法的数值计算,但基础使用上与numpy类似。 目录 1、tensor创建 2、tensor数据属性 3、 Tensor数据在CPU与GPU上的转换

    2024年01月20日
    浏览(48)
  • 基于Open3D的点云处理16-特征点匹配

    将点云数据统一到一个世界坐标系的过程称之为点云配准或者点云拼接。(registration/align) 点云配准的过程其实就是找到同名点对;即找到在点云中处在真实世界同一位置的点。 常见的点云配准算法: ICP、Color ICP、Trimed-ICP 算法流程: 选点: 确定参与到配准过程中的点集。 匹

    2024年02月10日
    浏览(59)
  • 【Open3D 实现点云拼接】——将两个点云合并成一个

    【Open3D 实现点云拼接】——将两个点云合并成一个 点云拼接是三维重建和场景重建中的重要一步,如何高效、准确地将两个点云进行拼接是一个挑战。Open3D是一个专业的开源库,提供了丰富的三维算法和工具,其中支持点云的读取、处理和可视化。本文将介绍如何使用Open

    2024年02月13日
    浏览(34)
  • 【点云处理教程】00计算机视觉的Open3D简介

            Open3D 是一个开源库,使开发人员能够处理 3D 数据。它提供了一组用于 3D 数据处理、可视化和机器学习任务的工具。该库支持各种数据格式,例如 .ply、.obj、.stl 和 .xyz,并允许用户创建自定义数据结构并在程序中访问它们。 Open3D 广泛应用于机器人、增强现实和自

    2024年02月14日
    浏览(47)
  • Anaconda3 环境下安装Open3D(自学笔记)

    Open3D是一个开源库,支持快速开发处理3D数据的软件。 3D数据结构; 3D数据处理算法; 场景重建; 表面对齐; 3D可视化; 基于物理的渲染(PBR); 支持PyTorch、TensorFlow; 支持GPU加速处理; 在C++和python都可以使用; 更多的使用信息可以查看http://www.open3d.org/docs 构建的pip和conda包支

    2024年02月07日
    浏览(43)
  • Open3D点云数据处理(二十):最小二乘直线拟合(三维)

    专栏目录:Open3D点云数据处理(Python) 最小二乘三维直线拟合的原理是通过最小化数据点到直线距离的平方和,找到最优的直线模型来拟合给定数据集。这个距离是指数据点到直线的垂线距离。 三维直线通常表示为两个平面的交线,形如 { A

    2024年02月12日
    浏览(52)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包