目录
windows安装:
python 3.10 win11 ok:
pip install vtk
pip install mayavi
python 3.6版本报错
TypeError: unsupported operand type(s) for -: 'str' and 'str'
mayavi显示点云 open3d效果也很棒
import numpy as np
import mayavi.mlab
# pointcloud = np.fromfile(str("lidar_path"), dtype=np.float32, count=-1).reshape([-1, 4])
# pointcloud = np.fromfile(str(r"1mayavi/bin/4_Truck_0.bin"), dtype=np.float32, count=-1).reshape([-1, 4])
pointcloud = np.fromfile(r"data_test/bin/kitti/000000.bin", dtype=np.float32, count=-1).reshape([-1, 4])
# pointcloud = np.fromfile(str("./000008.bin"), dtype=np.float32, count=-1).reshape([-1, 4])
x = pointcloud[:, 0] # x position of point
y = pointcloud[:, 1] # y position of point
z = pointcloud[:, 2] # z position of point
r = pointcloud[:, 3] # reflectance value of point
d = np.sqrt(x ** 2 + y ** 2) # Map Distance from sensor
degr = np.degrees(np.arctan(z / d))
vals = 'height'
if vals == "height":
col = z
else:
col = d
fig = mayavi.mlab.figure(bgcolor=(0, 0, 0), size=(640, 500))
mayavi.mlab.points3d(x, y, z,
col, # Values used for Color
mode="point",
colormap='spectral', # 'bone', 'copper', 'gnuplot'
# color=(0, 1, 0), # Used a fixed (r,g,b) instead
figure=fig,
)
mayavi.mlab.show()
结果很棒:
open3d可视化代码:
曲线红色:pcd.paint_uniform_color([1, 0, 0])
会显示为彩色,
设置背景为黑色,
import open3d as o3d
import numpy as np
path_obj = r"B:\data\kitti\000000.bin"
points = np.fromfile(path_obj, dtype=np.float32).reshape(-1, 4)
points = points[:, :3] # open3d 只需xyz 与pcl不同
# 将array格式的点云转换为open3d的点云格式,若直接用open3d打开的点云数据,则不用转换
pcd = open3d.geometry.PointCloud() # 传入3d点云格式
pcd.points = open3d.utility.Vector3dVector(points) # 转换格式
# 设置颜色 只能是0 1 如[1,0,0]代表红色为既r
# pcd.paint_uniform_color([1, 0, 0])
# 创建窗口对象
vis = open3d.visualization.Visualizer()
# 创建窗口,设置窗口名称
vis.create_window(window_name="point_cloud")
# 设置点云渲染参数
opt = vis.get_render_option()
# 设置背景色(这里为白色)
opt.background_color = np.array([0, 0, 0])
# 设置渲染点的大小
opt.point_size = 1.0
# 添加点云
vis.add_geometry(pcd)
vis.run()
效果:
解决安装问题,并给出一个demo
原文链接:https://blog.csdn.net/banyanmars/article/details/80838951
例子代码:
import numpy as np
from mayavi import mlab
x, y = np.ogrid[-2:2:160j, -2:2:160j]
z = abs(x) * np.exp(-x ** 2 - (y / .75) ** 2)
pl = mlab.surf(x, y, z, warp_scale=2)
mlab.axes(xlabel='x', ylabel='y', zlabel='z')
mlab.outline(pl)
mlab.show()
知乎上的例子:
import numpy as np
from mayavi import mlab
t=np.linspace(0,4*np.pi,125)
x=np.sin(2*t)
y=np.cos(t)
z=2*t
u=4+np.sin(3*t)
v=3+2*np.cos(t)
w=2+2*t
s=2+np.sin(t/5)
points=mlab.points3d(x,y,z,s,colormap='jet',scale_factor=.25)
points=mlab.points3d(u,v,w,s,colormap='jet',scale_factor=.25)
mlab.show()
from numpy import pi, sin, cos, mgrid
from mayavi import mlab
#建立数据
dphi, dtheta = pi/250.0, pi/250.0
[phi,theta] = mgrid[0:pi+dphi*1.5:dphi,0:2*pi+dtheta*1.5:dtheta]
m0 = 4; m1 = 3; m2 = 2; m3 = 3; m4 = 6; m5 = 2; m6 = 6; m7 = 4;
r = sin(m0*phi)**m1 + cos(m2*phi)**m3 + sin(m4*theta)**m5 + cos(m6*theta)**m7
x = r*sin(phi)*cos(theta)
y = r*cos(phi)
z = r*sin(phi)*sin(theta)
#对该数据进行三维可视化
s = mlab.mesh(x, y, z)
mlab.show()
更多完整例子,请看知乎博客: