如何在不加载 json 文件的情况下创建 open3d.visualization.SelectionPolygonVolume 对象
How to Create a open3d.visualization.SelectionPolygonVolume Object Without Loading a json Filel
我正在尝试使用 SelectionPolygonVolume 对象裁剪 Open3d 点云。在 Open3d 的 github tutorial 上,SelectionPolygonVolume 是通过调用创建的
vol = o3d.visualization.read_selection_polygon_volume("../../TestData/Crop/cropped.json")
从 json file 构建对象。
我可以将其设置为 运行 很好,但是如果不先从 json 文件加载它就无法生成 SelectionPolygonVolume。如果没有 json 文件,如何实例化 class?我已经通过文档和在线查看了所有内容,但找不到任何东西。
这是我到目前为止尝试过的方法:
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)
这在文档中不是很清楚,但您需要先将 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)
我正在尝试使用 SelectionPolygonVolume 对象裁剪 Open3d 点云。在 Open3d 的 github tutorial 上,SelectionPolygonVolume 是通过调用创建的
vol = o3d.visualization.read_selection_polygon_volume("../../TestData/Crop/cropped.json")
从 json file 构建对象。
我可以将其设置为 运行 很好,但是如果不先从 json 文件加载它就无法生成 SelectionPolygonVolume。如果没有 json 文件,如何实例化 class?我已经通过文档和在线查看了所有内容,但找不到任何东西。
这是我到目前为止尝试过的方法:
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)
这在文档中不是很清楚,但您需要先将 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)