Open3D 计算投影的点云的尺寸

目录

一、概述

1.1实现步骤

1.2应用场景

二、代码实现

三、实现效果

3.1原始点云

3.2投影后点云


Open3D点云算法汇总及实战案例汇总的目录地址:

Open3D点云算法与点云深度学习案例汇总(长期更新)-CSDN博客


一、概述

        在 Open3D 中,计算投影后的点云尺寸可以通过将点云投影到某个平面,然后计算该投影点云的边界框(Bounding Box)来实现。这个过程的主要步骤包括选择投影平面、将点云投影到该平面、计算投影点云的边界框,并最终计算边界框的尺寸。

1.1实现步骤

  1. 加载点云: 首先加载一个点云数据。
  2. 选择投影平面: 确定一个投影平面,通常是 XY、XZ 或 YZ 平面。
  3. 投影点云: 将点云投影到选择的平面上。
  4. 计算边界框: 计算投影点云的边界框,并从中提取尺寸信息。
  5. 可视化结果(可选): 可视化投影后的点云和边界框。

1.2应用场景

  • 尺寸测量: 在制造和质量控制中,通过投影点云可以测量物体在特定方向上的尺寸。
  • 对象识别: 在计算机视觉中,投影点云的尺寸信息可以用于识别和分类对象。
  • 碰撞检测: 在机器人导航中,计算投影后的尺寸可以用于碰撞检测和路径规划。

二、代码实现

import open3d as o3d
import numpy as np

# 加载点云数据
pcd = o3d.io.read_point_cloud("many_tree.pcd")
o3d.visualization.draw_geometries([pcd], window_name="Cloud", width=800, height=600)
# 将点云投影到XY平面(即忽略Z坐标)
points = np.asarray(pcd.points)
points_2d = points[:, :2]  # 只保留X和Y坐标

# 将投影后的2D点重新转换为点云格式
pcd_2d = o3d.geometry.PointCloud()
pcd_2d.points = o3d.utility.Vector3dVector(np.c_[points_2d, np.zeros(points_2d.shape[0])])  # Z坐标为0

# 计算投影点云的边界框
aabb = pcd_2d.get_axis_aligned_bounding_box()

# 获取边界框的最小和最大点
min_bound = aabb.get_min_bound()
max_bound = aabb.get_max_bound()

# 计算尺寸
width = max_bound[0] - min_bound[0]
height = max_bound[1] - min_bound[1]

print(f"Projected point cloud dimensions:\nWidth: {width}\nHeight: {height}")

# 可视化投影点云和边界框
pcd_2d.paint_uniform_color([1, 0, 0])  # 红色显示投影点云
o3d.visualization.draw_geometries([pcd_2d, aabb], window_name="Projected Point Cloud with AABB", width=800, height=600)

三、实现效果

3.1原始点云

3.2投影后点云

  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值