python用open3d库 实现PCD格式点云转换为LAS格式

概要

python用open3d库 实现PCD格式点云转换为LAS格式,本以为用文心一言和讯飞星火大模型做这种小功能,应该是小菜一碟,但谁知道还是翻车了

整体架构流程

安装open3d库
读取PCD格式数据
写入LAS格式

技术名词解释

  • Open3D是一个用于处理3D数据的开源库,它提供了许多功能,如点云处理、几何变换、可视化等
  • PCD(Point Cloud Data)是一种常见的开放式点云数据存储格式,最初由ROS(Robot Operating System)中的PCL(Point Cloud Library)项目引入。
    它广泛用于点云数据的存储和共享,可以包含元数据,如坐标系、点云类型等。
    PCD格式具有广泛的支持,可以使用各种点云处理工具来读取和写入PCD文件。
    与BIN(Binary)格式相比,PCD格式通常包含元数据,而BIN格式以二进制形式存储点云数据,更紧凑,适用于大型点云数据的存储
  • 从本质上来说,LAS格式是一种二进制文件格式。其目的是提供一种开放的格式标准,允许不同的硬件和软件提供商输出可互操作的统一格式。现在LAS格式文件已成为LiDAR数据的工业标准格式。

技术细节

import os
import open3d as o3d
import numpy as np
import laspy

def pcd_to_las(pcd_file, las_file):
    pcd2 = o3d.t.io.read_point_cloud(pcd_file)
    pcd_intensity = pcd2.point["intensity"]  # 强度
    pcd_points = pcd2.point["positions"]  # 坐标

    pcd_intensity = pcd_intensity[:, :].numpy()  # 转换为数组类型
    pcd_points = pcd_points[:, :].numpy()  # 转换为数组类型

    las = laspy.create()

    las.x = pcd_points[:, 0]
    las.y = pcd_points[:, 1]
    las.z = pcd_points[:, 2]
    las.intensity = pcd_intensity[:, 0]

    # 保存las文件
    las.write(las_file)

# 使用示例
pcd_to_las("D:/input.pcd", "D:/output.las")

小结

文心一言和讯飞星火给出的代码,要么不能读取pcd格式数据,要么保存的las中没有强度数据。
刚开始还怀疑可能是库的版本问题导致的,但当我在提示词中加入Open3D的库版本,还是有问题,看来代码生成工具还是有很长的路要走啊。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值