open3d-python kd-tree 找临近点

该文演示了如何在Open3D中加载点云数据并建立kdTree。首先,将点云着色并建立kdTree数据结构。接着,选取一个点作为锚点,将其设为红色,并通过搜索_knn_vector_3d找到最近的2000个邻居,将它们设为蓝色。然后,使用搜索_radius_vector_3d查找距离锚点0.2范围内点,将这些点设为绿色。最后,可视化处理后的点云。
摘要由CSDN通过智能技术生成

目录

1 加载点云并建立kdTree

2 设置查询点颜色

3 寻找指定个数的临近点

4 寻找指定范围内的临近点 


1 加载点云并建立kdTree

import open3d as o3d
import numpy as np


# 1 Build KDTree from point cloud

print("Testing kdtree in Open3D...")
print("Load a point cloud and paint it gray.")
sample_pcd_data = o3d.data.PCDPointCloud()
pcd = o3d.io.read_point_cloud(sample_pcd_data.path)
pcd.paint_uniform_color([0.5, 0.5, 0.5])

# 建立kdTree
pcd_tree = o3d.geometry.KDTreeFlann(pcd)

2 设置查询点颜色

# 2 Find neighboring points
# We pick the 9501st (arrays are 0-indexed) point as the anchor point and paint it red.
print("Paint the 1501st point red.")
pcd.colors[9500] = [1, 0, 0]  # 当前anchor point设置为红色

3 寻找指定个数的临近点

# 2.1 Using search_knn_vector_3d:指定个数 knn
print("Find its 2000 nearest neighbors, and paint them blue.")
[k, idx, dist] = pcd_tree.search_knn_vector_3d(query=pcd.points[9500], knn=2000)
np.asarray(pcd.colors)[idx[1:], :] = [0, 0, 1]  # 临近点点设置为蓝色,第一个是本身
print("Visualize the point cloud.")
o3d.visualization.draw_geometries([pcd])

4 寻找指定范围内的临近点 

# 2.2 Using search_radius_vector_3d:指定半径 rnn
print("Find its neighbors with distance less than 0.2, and paint them green.")
[k, idx, _] = pcd_tree.search_radius_vector_3d(query=pcd.points[9500], radius=0.2)
np.asarray(pcd.colors)[idx[1:], :] = [0, 1, 0]
print("Visualize the point cloud.")
o3d.visualization.draw_geometries([pcd])

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Mr.Q

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值