Open3d Python, ошибка типа при использовании TriangleMe sh .create_from_point_cloud_alpha_shape () - PullRequest
0 голосов
/ 26 февраля 2020

Я пытаюсь использовать open3d для создания "альфа-корпуса" вокруг набора 3d-точек, используя TriangleMesh. Однако я получаю TypeError.

import open3d as o3d
import numpy as np 

xx =np.asarray([[10,21,18], [31,20,25], [36,20,24], [33,19,24], [22,25,13], [25,19,24], [22,26,10],[29,19,24]])

cloud = o3d.geometry.PointCloud()
cloud.points = o3d.utility.Vector3dVector(xx)
mesh = o3d.geometry.TriangleMesh.create_from_point_cloud_alpha_shape(pcd=cloud, alpha=10.0)

output:

    Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: create_from_point_cloud_alpha_shape(): incompatible function arguments. The following argument types are supported:
1. (pcd: open3d.open3d.geometry.PointCloud, alpha: float, tetra_mesh: open3d::geometry::TetraMesh, pt_map: List[int]) -> open3d.open3d.geometry.TriangleMesh

Ошибка говорит о том, что объект, который я передаю функции, имеет неправильный тип. Но когда я проверяю тип, я получаю это:

>>print(type(cloud))
<class 'open3d.open3d.geometry.PointCloud'>

Пожалуйста, кто-нибудь может мне помочь с этой ошибкой?

Примечание : комментарий к этому сообщению Python open3D без атрибута 'create_coordinate_frame' предположил, что это может быть проблемой при установке, и что решение должно было скомпилировать библиотеку из исходного кода. Поэтому я скомпилировал библиотеку из исходного кода. После этого побежал make install-pip-package. Хотя я не уверен, что он завершился правильно, потому что я еще не смог import open3d в python; см. вывод установки: https://pastebin.com/sS2TZfTL (я не был уверен, что эта команда должна была завершить установку, или вам все еще нужно было запустить pip? После того, как я запустил python3 -m pip install Open3d, я мог импортировать библиотека в python.)

1 Ответ

0 голосов
/ 05 мая 2020

Ошибка в привязках текущего выпуска (v0.9.0):

https://github.com/intel-isl/Open3D/issues/1621

Исправление для мастера:

https://github.com/intel-isl/Open3D/pull/1624

Обходной путь:

tetra_mesh, pt_map = o3d.geometry.TetraMesh.create_from_point_cloud(pcd)
mesh = o3d.geometry.TriangleMesh.create_from_point_cloud_alpha_shape(pcd, alpha, tetra_mesh, pt_map)
...