首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python open3D没有属性'create_coordinate_frame‘

Python open3D没有属性'create_coordinate_frame‘
EN

Stack Overflow用户
提问于 2019-10-01 04:16:51
回答 1查看 2.3K关注 0票数 0

我想在用Python在open3D中可视化一个点云时显示坐标。根据documentation,我编写了以下代码,其中第三行用于创建坐标。(假设point_cache是一个具有形状(442368, 3)np.array )

代码语言:javascript
复制
pcd = o3d.geometry.PointCloud()
pcd.points = o3d.utility.Vector3dVector(point_cache)
mesh_frame = o3d.geometry.TriangleMesh.create_coordinate_frame(size=0.6, origin=[-2, -2, -2])
o3d.visualization.draw_geometries([pcd, mesh_frame])

但它显示了以下错误,表明TriangleMesh中没有名为create_coordinate_frame的属性。

代码语言:javascript
复制
---------------------------------------------------------------------------
AttributeError                            Traceback (most recent call last)
<ipython-input-20-2e528bfc7404> in <module>
      1 pcd = o3d.geometry.PointCloud()
      2 pcd.points = o3d.utility.Vector3dVector(point_cache)
----> 3 mesh_frame = o3d.geometry.TriangleMesh.create_coordinate_frame(size=0.6, origin=[-2, -2, -2])
      4 o3d.visualization.draw_geometries([pcd, mesh_frame])

AttributeError: type object 'open3d.open3d.geometry.TriangleMesh' has no attribute 'create_coordinate_frame'

我想知道为什么会出现这个错误,因为第三行与文档完全相同。

我的open3D版本如下所示。

代码语言:javascript
复制
[Frost@CC’s Mac ~]$ python3 -m pip show open3d
Name: open3d
Version: 0.8.0.0
Summary: ['Open3D is an open-source library that supports rapid development of software that deals with 3D data.']
Home-page: http://www.open3d.org
Author: Open3D Team
Author-email: info@open3d.org
License: MIT
Location: /Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages
Requires: notebook, widgetsnbextension, ipywidgets, numpy
Required-by:
EN

回答 1

Stack Overflow用户

发布于 2020-03-19 04:08:24

属性create_coordinate_frame不存在;您指的是create_mesh_coordinate_frame。这也不适用于您,因为它适用于网格,而不是点云。

要查看带轴的点云,我建议使用PyGEL 3D (pygel,gel3D,GEL -都一样)。在Jupyter笔记本中试试这个:

代码语言:javascript
复制
from PyGEL3D import gel
from PyGEL3D import js

m = gel.ply_load('filename.ply') # Also try gel.wrl_load() for WRL files ;-)
m_points = m.positions() # Extract (n, 3) array (or list) of n points
js.display(m, smooth=False) # Note we do not need to extract points to view cloud

如果你没有使用Jupyter Notebook,用js.display删除最后一行。将其替换为:

代码语言:javascript
复制
viewer = gel.GLManifoldViewer()
viewer.display(m)
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58174767

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档