4

我正在为 windows 上的 python3 使用 open3d。它是通过 pip via 安装的'pip install open3d-python'。我检查了文档,我的脚本似乎一切正常,它试图将点云文件 (.ply) 转换为网格 (.stl)。但是,在执行时我得到一个attribute error: 'open3d.open3d.geometry.PointCloud' has no attribute 'estimate_normals'. 任何帮助,将不胜感激。谢谢

这是我的脚本

import open3d as o3d
import trimesh
import numpy as np

pcd = o3d.io.read_point_cloud("pointcloud.ply")
pcd.estimate_normals()
#pcd = pcd2.normals
# estimate radius for rolling ball
distances = pcd.compute_nearest_neighbor_distance()
avg_dist = np.mean(distances)
radius = 1.5 * avg_dist

mesh = o3d.geometry.TriangleMesh.create_from_point_cloud_ball_pivoting(pcd,o3d.utility.DoubleVector([radius, radius * 2]))

trimesh = trimesh.Trimesh(np.asarray(mesh.vertices), np.asarray(mesh.triangles),vertex_normals=np.asarray(mesh.vertex_normals))

trimesh.export('stuff.stl')

编辑

我在某处读到从源代码编译原始包可以解决问题,但我是一个 mac 用户,并且正在尝试在 Windows 上执行此操作,所以我不知道该怎么做。这是包https://github.com/intel-isl/Open3D的 github 链接

4

2 回答 2

3

我遇到了同样的问题,发现问题是由于通过pip install open3d-python. 对我来说是v0.6.0。该文档基于新版本。从版本v0.8.0open3d 开始,应安装为 condapip install open3dconda install -c open3d-admin open3d为 conda。在发布中找到该信息。它解决了我的mac上的问题。

于 2020-03-11T11:30:23.180 回答
0

这对我有用:

  1. open3d卸载安装为和的不同版本的open3d open3d-python
    pip uninstall open3d open3d-python
  2. 安装open3d 0.8
    pip install open3d==0.8.0.0
  3. 计算表面法线:
    pcd.estimate_normals(search_param=o3d.geometry.KDTreeSearchParamHybrid(radius=0.1, max_nn=30))
  4. n当显示窗口打开以查看法线时,通过按来可视化表面法线:
    o3d.visualization.draw_geometries([pcd])
于 2020-12-05T17:07:38.810 回答