我正在为 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 链接