Как создать объект 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)