当前位置: 首页 > article >正文

雷达点云数据.pcd格式转.bin格式

雷达点云数据.pcd格式转.bin格式

注意,方法1原则上可行,但是本人没整好pypcd的环境

方法2是绝对可以的。

方法1

1 源码如下:

def pcb2bin1():   # save as bin format
    '''
    '''
    import os
    # import pypcd
    from pypcd import pypcd
    import numpy as np
    from tqdm import tqdm

    pcd_pth = r'./data/002140.pcd'
    bin_pth = r'./data/002140.bin'

    files = os.listdir(pcd_pth)
    files = [f for f in files if f[-4:]=='.pcd']

    # for f in files:
    for ic in tqdm(range(len(files)), desc='进度 '):
        f = files[ic]
        binname = os.path.join(pcd_pth, f)
        binname = os.path.join(bin_pth, f[:-4]+'.bin')

        # Load pcd from pypcd
        pc = pypcd.PointCloud.from_path(binname)
        np_x = (np.array(pc.pc_data['x'], dtype=np.float32)).astype(np.float32)
        np_y = (np.array(pc.pc_data['y'], dtype=np.float32)).astype(np.float32)
        np_z = (np.array(pc.pc_data['z'], dtype=np.float32)).astype(np.float32)
        np_i = (np.array(pc.pc_data['intensity'], dtype=np.float32)).astype(np.float32) / 256
        points_32 = np.transpose(np.vstack((np_x, np_y, np_z, np_i)))
        with open(bin_pth, 'w') as f:  # Save as bin format
            points_32.tofile(f)

2 调用pypcd库,但是安装好之后,报错如下

pc = pypcd.PointCloud.from_path(binname)
AttributeError: module 'pypcd' has no attribute 'PointCloud'

此问题是版本不匹配的问题

3 其它人的解决方法

3.1 下载官方源码

git clone https://github.com/dimatura/pypcd

3.2 如下流程

(1)

cd pypcd
git fetch origin pull/9/head:python3

上述 git 命令尝试了很多遍才成功,打印如下

remote: Enumerating objects: 36, done.
remote: Counting objects: 100% (22/22), done.
remote: Compressing objects: 100% (5/5), done.
remote: Total 36 (delta 19), reused 17 (delta 17), pack-reused 14
Unpacking objects: 100% (36/36), 12.82 KiB | 3.00 KiB/s, done.
From https://github.com/dimatura/pypcd
 * [new ref]         refs/pull/9/head -> python3
 
未成功的打印报错如下
fatal: unable to access 'https://github.com/dimatura/pypcd/': HTTP/2 stream 1 was not closed cleanly before end of the underlying stream

(2)

git checkout python3

(3)

python3 setup.py install --user 

方法2

1 源码如下:

def pcd2bin2():
    import numpy as np
    import open3d as o3d

    pcd_path = './data/002140.pcd'
    bin_path = './data/002140.bin'


    # 读取PCD文件    
    pcd = o3d.io.read_point_cloud(pcd_path)
    # print(pcd)
    points = np.asarray(pcd.points)
    # 查看点云图像
    # o3d.visualization.draw_geometries([pcd])
    # 将PCD格式保存为BIN格式
    points.tofile(bin_path)
    # o3d.io.write_point_cloud(bin_path, pcd)  # 正常执行,但是不保存数据

2 环境

需要包含open3d的环境(注意,这里的python的环境必须是3.7的版本,亲测3.8的python环境一直无法import open3d)

conda create -n pcd2bin python=3.7
conda activate pcd2bin
pip install open3d

参考:

1 python3中pypcd读取点云数据

2 [python pcd2bin_51CTO博客](https://blog.51cto.com/u_16175471/7581334#:~:text=journey title Python PCD转BIN 实现步骤 section 准备工作 清理环境,将读取到的点云数据转换为numpy数组 section 保存为BIN文件 定义保存路径 使用numpy库将点云数据保存为BIN文件 section 完成转换 打印转换成功消息)


http://www.kler.cn/a/162517.html

相关文章:

  • Java项目实战II基于微信小程序的个人行政复议在线预约系统微信小程序(开发文档+数据库+源码)
  • 腾讯云nginx SSL证书配置
  • 【机器学习】平均绝对误差(MAE:Mean Absolute Error)
  • 【Playwright + Python】系列(十)利用 Playwright 完美处理 Dialogs 对话框
  • Python如何用正则表达式匹配并处理文件名
  • 【循环神经网络】
  • 经典神经网络——ResNet模型论文详解及代码复现
  • 5G承载网和大客户承载的演进
  • CFS三层靶机内网渗透
  • Vue学习计划-Vue2--Vue核心(五)条件、列表渲染、表单数据
  • ChatGPT的常识
  • 【网络协议】聊聊网络ReadTimeout和ConnectTimeout
  • 资深IT经理分享如何选择商用远控软件三:评估产品方案匹配度
  • 《opencv实用探索·十四》VideoCapture播放视频和视像头调用
  • 计算机网络测试题
  • 为什么感染HPV的人越来越多?劲松中西医结合医院专家发表看法
  • 12月8日作业
  • 打造专属小程序,乔拓云模板平台助力商家抢占先机
  • 监控pod 容器外网请求网络带宽,过滤掉内网、基于k8spacket开发
  • java中Lists.newArrayList和new ArrayList的详细区别?
  • 力扣labuladong一刷day30天二叉树
  • 高效的多维空间点索引算法——GeoHash
  • Smart Link和Monitor Link
  • 【STM32入门】3.OLED屏幕
  • Linux系统之部署Plik临时文件上传系统
  • Visual Studio2019 下解决输出有中文时编译不过或乱码的问题