使用mayavi可视化点云和3D Box
发布日期:2021-09-16 07:32:00 浏览次数:1 分类:技术文章

本文共 1430 字,大约阅读时间需要 4 分钟。

python中使用mayavi画长方体框

网上mayavi的参考资料比较少,有的博客基本也是搬运mayavi的官方教程,这里给出一个手册的链接:

http://docs.enthought.com/mayavi/mayavi/index.html

我本是想用mayavi可视化点云和3D Box,但在画3D Box时遇到了问题。

import mayavi.mlab as mlabimport numpy as npdef plot3Dboxes(corners):    for i in range(corners.shape[0]):        corner = corners[i]        plot3Dbox(corner)def plot3Dbox(corner):    idx = np.array([0, 1, 2, 3, 0, 4, 5, 6, 7, 4, 5, 1, 2, 6, 7, 3])    x = corner[0, idx]    y = corner[1, idx]    z = corner[2, idx]    mlab.plot3d(x, y, z, color=(0.23, 0.6, 1), colormap='Spectral', representation='wireframe', line_width=5)    # mlab.show(stop=True)corners = np.array([[[0, 1, 1, 0, 0, 1, 1, 0], [0, 0, 1, 1, 0, 0, 1, 1], [0, 0, 0, 0, 1, 1, 1, 1]]])plot3Dboxes(corners)

在使用上述代码画图时,总会出现如下结果,明明是只画了长方体的12个棱,但每个面都出现对角线相连的情况。

在这里插入图片描述

问题出在了变量corner的格式,需要改成float类型,使用如下代码,将corners的格式变为float类型,结果就正确了。

import mayavi.mlab as mlabimport numpy as npdef plot3Dboxes(corners):    for i in range(corners.shape[0]):        corner = corners[i]        plot3Dbox(corner)def plot3Dbox(corner):    idx = np.array([0, 1, 2, 3, 0, 4, 5, 6, 7, 4, 5, 1, 2, 6, 7, 3])    x = corner[0, idx]    y = corner[1, idx]    z = corner[2, idx]    mlab.plot3d(x, y, z, color=(0.23, 0.6, 1), colormap='Spectral', representation='wireframe', line_width=5)    # mlab.show(stop=True)corners = np.array([[[0.0, 1, 1, 0, 0, 1, 1, 0], [0, 0, 1, 1, 0, 0, 1, 1], [0, 0, 0, 0, 1, 1, 1, 1]]])plot3Dboxes(corners)

正确结果如下

在这里插入图片描述

转载地址:https://blog.csdn.net/wqwqqwqw1231/article/details/95046506 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:cs231n课程笔记
下一篇:【深度学习】【Pytorch学习】Pytorch自带Loss总结

发表评论

最新留言

路过,博主的博客真漂亮。。
[***.116.15.85]2024年04月11日 09时24分12秒