第三方库下载

pip install --user open3d

注意,windows在cmd安装时可能会报错,如果是安装了anaconda的话在Prompt下用pip安装。不到万不得已不建议用conda的方式安装!因为conda安装的版本功能不完整。

一个简单的例子

import numpy as np
import open3d as o3d
#随机创造一些空间点
points = (np.random.rand(1000, 3) - 0.5) / 4
colors = np.random.rand(1000, 3)
#声明,再转化为点云
pcd = o3d.geometry.PointCloud()
pcd.points = o3d.utility.Vector3dVector(points)
pcd.colors = o3d.utility.Vector3dVector(colors)
#显示
o3d.visualization.draw_geometries([pcd], window_name="3D", width=1280, height=720)

eb12763054ec4cd3b74f086ceed82d5a

文件读取方式

1.点云读取

import open3d as o3d

print("Load a ply point cloud, print it, and render it")
pcd = o3d.io.read_point_cloud("mode/wurenji.PLY")
o3d.visualization.draw_geometries([pcd], window_name="3D", width=1280, height=720)

da9cb0ee01964286ad65637a75b7f3ba
特点:仅支持部分文件的打开,如ply和pcd,如要打开stl,则用下面的方法

官方文档说明函数支持的格式

格式描述
xyz每行包括[x, y, z],其中x,y,z是3D坐标
xyzn每行包括[x, y, z, nx, ny, nz],其中nx、ny、nz是法线
xyzrgb每行包括[x, y, z, r, g, b],其中rgb再[0, 1]浮点数范围内
pts请查阅官方文档
ply--
pcd--

可以明确指定文件类型。在这种情况下,文件扩展名将被忽略。

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

2.Mesh

import open3d as o3d

print("Load a ply point cloud, print it, and render it")
#---------#
pcd = o3d.io.read_triangle_mesh("mode/mogu3.STL")
pcd.compute_vertex_normals()
#--------#
o3d.visualization.draw_geometries([pcd], window_name="3D", width=1280, height=720)

官方文档说明函数支持的格式

plystlobjoffgltf/glb

3D显示

o3d.visualization.draw_geometries()

参数:

draw_geometries(geometry_list,window_name='Open3D',width=1920,height=1080,left=50,top=50,point_show_normal=False,mesh_show_wireframe=False,mesh_show_back_face=False,lookat,up,front,zoom)
  • 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 ) – 也可视化网格三角形的背面。
  • lookat ( numpy.ndarray [ numpy.float64 [ 3 , 1 ] ] ) – 相机的观察向量。
  • up ( numpy.ndarray [ numpy.float64 [ 3 , 1 ] ] ) – 相机的向上向量。
  • front ( numpy.ndarray [ numpy.float64 [ 3 , 1 ] ] ) – 相机的前向量。
  • zoom ( float ) – 相机的缩放。

参考文章

https://blog.csdn.net/weixin_40511249/article/details/113557181?spm=1001.2014.3001.5502
https://blog.csdn.net/weixin_40511249/article/details/113557296?spm=1001.2014.3001.5502
https://zpcblue.blog.csdn.net/article/details/106272710?spm=1001.2014.3001.5502

文章目录