1. 安装mayavi
pip3 install mayavi
pip3 install wxPython
2. 代码
import os
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
import numpy as np
from mayavi import mlab
def on_scroll(event,ax,fig):
cur_xlim = ax.get_xlim()
cur_ylim = ax.get_ylim()
x_scroll = event.step * 0.1 * (cur_xlim[1] - cur_xlim[0])
y_scroll = event.step * 0.1 * (cur_ylim[1] - cur_ylim[0])
new_xlim = [cur_xlim[0] + x_scroll, cur_xlim[1] - x_scroll]
new_ylim = [cur_ylim[0] + y_scroll, cur_ylim[1] - y_scroll]
ax.set_xlim(new_xlim)
ax.set_ylim(new_ylim)
fig.canvas.draw_idle()
def get_ptcloud_img(ptcloud,roll,pitch):
fig = plt.figure(figsize=(8, 8))
x, y, z = ptcloud[:,:3].transpose(1, 0)
ax = fig.gca(projection=Axes3D.name, adjustable='box')
ax.axis('off')
ax.view_init(roll,pitch)
max, min = np.max(ptcloud), np.min(ptcloud)
ax.set_xbound(min, max)
ax.set_ybound(min, max)
ax.set_zbound(min, max)
ax.scatter(x, y, z, zdir='z', color='blue')
fig.canvas.mpl_connect('scroll_event', lambda event: on_scroll(event, ax,fig))
plt.show()
point = np.load(r"bed_0001.npy",allow_pickle=True)
print(point.shape)
coords = point[:,:3]
mlab.figure(bgcolor=(1,1,1))
mlab.points3d(coords[:,0],coords[:,1],coords[:,2],color=(128/255,128/255,255/255))
mlab.show()
3. 可视化效果