Проблема Open3d Python: нет атрибута "Estimation_normals"

Я работаю с open3d для python3 в Windows. Он был установлен через pip через'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, поэтому я не могу понять, как это сделать. вот ссылка на github для пакета https://github.com/intel-isl/Open3D

3 ответа

Решение

У меня та же проблема, и я обнаружил, что проблема возникла из-за неправильной версии open3d, которая была установлена ​​через pip install open3d-python. Для меня это былоv0.6.0. Документация основана на новых выпусках. Начиная с версииv0.8.0 open3d должен быть установлен как pip install open3d или conda install -c open3d-admin open3dдля конды. Нашел ту информацию в релизах. Это решило проблему на моем Mac.

Это работает для меня:

  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])

Лучшим решением для меня было просто использовать документацию для версии, которую я использовал (0.13.0). Похоже, что с обновлениями они изменили API, и поэтому некоторые старые команды невозможны.

Другие вопросы по тегам