python学习笔记3--python实现kdtree根据距离检索案例分享

Posted 鸿_H

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python学习笔记3--python实现kdtree根据距离检索案例分享相关的知识,希望对你有一定的参考价值。

环境:python3 、ubuntu20.04、vscode、open3d

前言:介绍使用python实现的kdtree检索例子

通过kdtree根据距离找点案例:

import numpy as np
import pandas as pd
import open3d as o3d
from pandas.core import frame

file_path = "/home/ylh/dataset/point_data.csv"	#点云文件csv(类似excel)

df = pd.read_csv(file_path)
point_mat = np.array(df)#把自己的df文件转为np格式

pc_pcd = o3d.geometry.PointCloud()#构建点云
#将自己点云构建一个容器结构,里面按一点一行形式保存经来,点数据内容为point_mat[:,2:5]取第2,3,4列
pc_pcd.points = o3d.utility.Vector3dVector(point_mat[:,2:5])
pcd_tree = o3d.geometry.KDTreeFlann(pc_pcd)#构建kdtree
#取第一个点为基准(根据个人情况进行设定,这里举例子而已),也就是检索点中心
query_point = point_mat[0,2:5]
#在基准点0.1米球半径范围检索点的数目
[k, idx, dis] = pcd_tree.search_radius_vector_3d(query_point, 0.1)
#k符合点的数目,idx表示点原行序号数组(返回时会自动按照从近到远排序的,数值指的是该点在csv文件中行号),dis距离基准点的距离,k是数字,后面两个是数组。这里仅供参考,由于原有的笔记本出问题,写blog这个本没有安装open3d,使用时可以打印输出测试一下知道其中的内容了
print(k)	#打印在检索范围内,符合条件的点个数。

流程小结:声明点云容器、往点云容器加点、对点云构树、设置检索圆心(基准点)、检索、获取检索结果

#####################
不积硅步,无以至千里
好记性不如烂笔头

以上是关于python学习笔记3--python实现kdtree根据距离检索案例分享的主要内容,如果未能解决你的问题,请参考以下文章

python学习笔记3--python实现kdtree根据距离检索案例分享

python3基础之整数常用的方法整理

python学习笔记-实现linux系统python命令行光标移动

激光slam课程学习笔记--第3课: 3D激光 slam

激光slam课程学习笔记--第3课: 3D激光 slam

python学习笔记 python实现k-means聚类