set_geometry
函数用于设置KDTreeFlann
数据结构的点云数据源。在KDTreeFlann
上进行查找时,需要将依据其构建好的索引使用某个点云数据源进行初始化。
set_geometry(geometry: open3d.geometry.PointCloud)
geometry
: open3d.geometry.PointCloud
类型的点云数据源,用于构建KDTreeFlann
索引。import numpy as np
import open3d as o3d
# 创建一个点云
points = np.array([[0, 0, 0], [0, 1, 0], [1, 0, 0], [1, 1, 0],
[2, 0, 0], [2, 1, 0], [3, 0, 0], [3, 1, 0]],
dtype=np.float32)
pcd = o3d.geometry.PointCloud()
pcd.points = o3d.utility.Vector3dVector(points)
# 创建KDTree
tree = o3d.geometry.KDTreeFlann()
tree.set_geometry(pcd) # 将点云数据源传入
# 找到距离(0,0,0)最近的点
[index, _] = tree.search_knn_vector_3d([0, 0, 0], 1)
print("Nearest neighbor has index = ", index[0])
TypeError
: 当传入的geometry
参数不是open3d.geometry.PointCloud
类型的实例时,会抛出TypeError
异常。