Opene3d提供了一个简单的可视化函数draw_geometries,该函数用于实现几何对象(PointCloud,TriangleMesh或者Image)的渲染可视化。
在可视化界面能够通过鼠标进行缩放,旋转和平移,改变渲染风格和屏幕截图等,具体使用方法可通过在窗口界面按 h 键进行查看。
在open3d-0.15.1版本中draw_geometries函数有以下两种调用方式:
调用方式一
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):
window_name
:可视化窗口的显示标题。width
:可视化窗口的宽度。height
:可视化窗口的高度。left
:可视化窗口的左边距。top
:可视化窗口的上边距。point_show_normal
:如果设置为true,则可视化点法线。mesh_show_wireframe
:如果设置为true,则可视化网格线框。mesh_show_back_face
:可视化网格三角形的背面。代码示例
import open3d as o3d
print("Testing IO for images")
img = o3d.io.read_image("y7.png") # 读取图片(支持jpg和png格式)
print(img) # 图片大小
o3d.io.write_image("天使.jpg", img) # 保存图片
o3d.visualization.draw_geometries([img], window_name="Open3D显示图像",
width=1024, height=768,
left=50, top=50,
mesh_show_back_face=False) # 显示图片
调用方式二
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)
window_name
:可视化窗口的显示标题。width
:可视化窗口的宽度。height
:可视化窗口的高度。left
:可视化窗口的左边距。top
:可视化窗口的上边距。point_show_normal
:如果设置为true,则可视化点法线。mesh_show_wireframe
:如果设置为true,则可视化网格线框。mesh_show_back_face
:可视化网格三角形的背面。lookat
:相机的主视方向向量。up
:相机的俯视方向向量。front
:相机的前视方向向量。zoom
:相机的焦距。import open3d as o3d
print("读取点云并可视化")
pcd = o3d.io.read_point_cloud("data/fragment.ply")
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])
刚开始可视化界面中显示的点云如上图所示,通过鼠标拖动将点云更改一个新的显示视角,如下图所示
按下ctrl+c保持这个视角后,这个视角将会成为一个保存在粘贴板里面的一个json字符串。这时再旋转视图到一个不同的视角,比如下图这样:
这时候按下ctrl+v,就可以回到上一步ctrl+c保存的视角。
Open3d中的Visualizer
可视化函数支持多种渲染风格。比如按 L
将在Phong lighting 和简单颜色渲染之间切换(simple color rendering)。按 2 将展现基于x坐标的颜色。
颜色映射也可以进行调整,比如使用shift+4
,就可以把颜色从喷墨映射调整到热力图映射。