Open3d Python 问题:没有属性 'estimate_normals'

Open3d Python Issue: No attribute 'estimate_normals'

我正在 windows 上为 python3 使用 open3d。它是通过 'pip install open3d-python' 通过 pip 安装的。我检查了文档,我的脚本似乎一切正常,它试图将点云文件 (.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 link

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

上的问题

这对我有用:

  1. 正在卸载安装为 open3dopen3d-python 的不同版本的 open3d:
    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. 当显示屏 window 打开以查看法线时,按 n 来可视化表面法线:
    o3d.visualization.draw_geometries([pcd])