点云可视化mayavi 效果很棒

目录

windows安装:

python 3.10 win11 ok:

python 3.6版本报错

mayavi显示点云 open3d效果也很棒

结果很棒:

open3d可视化代码:

解决安装问题,并给出一个demo


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()

更多完整例子,请看知乎博客:

mayavi 交互式可视化 - 知乎

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

AI算法网奇

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值