get_point_indices_within_bounding_box
函数用于获取落在定向边界框内的点的索引。 它接受一个点云和一个定向边界框作为输入,并返回一个列表,其中包含点云中所有在定向边界框内的点的索引。
get_point_indices_within_bounding_box(
point_cloud: open3d.geometry.PointCloud,
bounding_box: open3d.geometry.OrientedBoundingBox,
criteria: Optional[Callable[[int], bool]] = None,
invert: bool = False) -> List[int]
参数说明:
point_cloud
:要搜索的点云对象bounding_box
:定向边界框对象criteria
:可选,将每个点的索引作为输入,如果函数返回 True
,则表示该点的索引将被包含在结果列表中。默认为 None
,将所有点包含在结果列表中。invert
:可选,如果为 True
,则将包含点的索引列表取反。默认为 False
。返回值:
List[int]
:列表中包含输入点云中落在定向边界框内的点的索引。import open3d as o3d
#创建点云
pcd = o3d.geometry.PointCloud()
pcd.points = o3d.utility.Vector3dVector([
[0.0, 0.0, 0.0],
[1.0, 1.0, 1.0],
[2.0, 2.0, 2.0],
[3.0, 3.0, 3.0],
[4.0, 4.0, 4.0]
])
#创建定向边界框
obb = o3d.geometry.OrientedBoundingBox()
obb.color = (1, 0, 0)
obb.center = (2, 2, 2)
obb.extent = (2, 2, 2)
obb.rotation = [[1, 0, 0], [0, 1, 0], [0, 0, 1]]
#获取定向边界框内的点的索引
indices = obb.get_point_indices_within_bounding_box(pcd)
print(indices) #[1, 2, 3]
#将获取的索引取反
invert_indices = obb.get_point_indices_within_bounding_box(pcd, invert=True)
print(invert_indices) #[0, 4]