本文为博主原创文章,未经博主允许不得转载。
本文为专栏《python三维点云从基础到深度学习》系列文章,地址为“https://blog.youkuaiyun.com/suiyingy/article/details/124017716”。
1 Open3d 安装
Open3d是由Intel发布的一个开源库,支持快速开发和处理3D数据。Open3D在c++和Python中公开了一组精心选择的数据结构和算法。后端是高度优化的,并且是为并行化而设置的。
Open3d直接使用pip安装即可。解决下载慢的问题,请切换下载源。设置方式请参考:python pip_Coding的叶子的博客-优快云博客。
pip install open3d
ply点云格式介绍请参考:点云格式介绍(二)_Coding的叶子的博客-优快云博客。
对于ply点云文件,Open3d读取到的点云通常存储到TriangleMesh类中,如下图所示。下图中vertices存储了全部的点云坐标,可以用numpy.array转换成矩阵形式。
2 numpy转TriangleMesh
对于点云矩阵,通常要转换为TriangleMesh格式才能被Open3d处理,包括存储和点云处理等。
import open3d as o3d
ply = o3d.geometry.TriangleMesh()
ply.vertices = o3d.utility.Vector3dVector(points_array)
3 读ply点云文件
Open3d读取ply格式点云文件的函数为o3d.io.read_triangle_mesh,读取的点云存储为上图所示的TriangleMesh类。
import open3d as o3d
import numpy as np
ply = o3d.io.read_triangle_mesh(path)
points = np.array(ply.vertices) #转为矩阵
4 写ply点云文件
保存点云文件的函数为o3d.io.write_triangle_mesh。
o3d.io.write_triangle_mesh(path, ply)
注意事项:这样保存的文件可以被open3d直接读取,但是用其他方式读取时可能会出现如下所示的编码错误,因此最好指定保存的编码方式。
o3d.io.write_triangle_mesh (path, ply, write_ascii=True)
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xfe in position 203: invalid continuation byte。
更多三维、二维感知算法和金融量化分析算法请关注“乐乐感知学堂”微信公众号,并将持续进行更新。
本文为博主原创文章,未经博主允许不得转载。
本文为专栏《python三维点云从基础到深度学习》系列文章,地址为“https://blog.youkuaiyun.com/suiyingy/article/details/124017716”。