Как создать объект open3d.visualization.SelectionPolygonVolume без загрузки файла json

Я пытаюсь обрезать облако точек Open3d с помощью объекта SelectionPolygonVolume. В учебнике Open3d по github, SelectionPolygonVolume создается путем вызова vol = o3d.visualization.read_selection_polygon_volume("../../TestData/Crop/cropped.json") построить объект из файла JSON.

Я могу заставить это работать нормально, но не могу сгенерировать SelectionPolygonVolume, не загрузив его сначала из файла json. Как создать экземпляр класса без файла json? Я просмотрел все документы и онлайн и ничего не могу найти.

Вот что я пробовал до сих пор:

bounding_polygon = np.array([ 
            [ 2.6509309513852526, 0.0, 1.6834473132326844 ],
                                ...
            [ 2.6579576128816544, 0.0, 1.6819127849749496 ]]).astype("float64")
vol = o3d.visualization.SelectionPolygonVolume()
vol.orthogonal_axis = "Y"
vol.axis_max = 4.022921085357666
vol.axis_min = -0.76341366767883301
vol.bounding_polygon = bounding_polygon

но выдает следующую ошибку (при вызове vol.bounding_polygon = bounding_polygon):

TypeError: (): incompatible function arguments. The following argument types are supported:
    1. (self: open3d.open3d.visualization.SelectionPolygonVolume, arg0: open3d.open3d.utility.Vector3dVector) -> None

Invoked with: visualization::SelectionPolygonVolume, access its members:
orthogonal_axis, bounding_polygon, axis_min, axis_max, array([[2.65093095, 0.        , 1.68344731],

Одним из очевидных обходных путей может быть сохранение файлов JSON для новых объектов, но это, очевидно, неуклюжий и по возможности его следует избегать.

Любой совет / объяснение будет оценено!

Благодарю.

примечание стороны: я думаю, что было бы разумно для тега open3d. быть доступным для вопросов, касающихся проекта Open3d ( http://www.open3d.org/)

0 ответов

Это не очень ясно из документации, но вам нужно преобразовать массив numpy в тип Vector3dVector первый.

bounding_polygon = np.array([ 
            [ 2.6509309513852526, 0.0, 1.6834473132326844 ],
                                ...
            [ 2.6579576128816544, 0.0, 1.6819127849749496 ]]).astype("float64")

vol = o3d.visualization.SelectionPolygonVolume()

vol.bounding_polygon = o3d.utility.Vector3dVector(bounding_polygon)
Другие вопросы по тегам