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 open3d
或 conda install -c open3d-admin open3d
。在 releases 中找到该信息。它解决了我 mac.
上的问题
这对我有用:
- 正在卸载安装为
open3d
和 open3d-python
的不同版本的 open3d:
pip uninstall open3d open3d-python
- 正在安装
open3d 0.8
:
pip install open3d==0.8.0.0
- 计算表面法线:
pcd.estimate_normals(search_param=o3d.geometry.KDTreeSearchParamHybrid(radius=0.1, max_nn=30))
- 当显示屏 window 打开以查看法线时,按
n
来可视化表面法线:
o3d.visualization.draw_geometries([pcd])
我正在 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 open3d
或 conda install -c open3d-admin open3d
。在 releases 中找到该信息。它解决了我 mac.
这对我有用:
- 正在卸载安装为
open3d
和open3d-python
的不同版本的 open3d:
pip uninstall open3d open3d-python
- 正在安装
open3d 0.8
:
pip install open3d==0.8.0.0
- 计算表面法线:
pcd.estimate_normals(search_param=o3d.geometry.KDTreeSearchParamHybrid(radius=0.1, max_nn=30))
- 当显示屏 window 打开以查看法线时,按
n
来可视化表面法线:
o3d.visualization.draw_geometries([pcd])