基于python实现点云数据格式的转换(csv转bin,csv转pcd)

基于python实现点云数据格式的转换(csv转bin,csv转pcd)

  • csv转bin
import numpy as np
import os
import pandas as pd


def pointsTobin(input, output):
    data = pd.read_csv(input, encoding='utf-8')  # 读取csv文件
    data_234 = data.iloc[:, 0:3]  # 这里做的是切割,因为我这里只用到了其收集数据的第1列到第三列,即x,y,z 可根据自身需要设置
    np_x = (np.array(data_234['x'], dtype=np.float32)).astype(np.float32)
    np_y = (np.array(data_234['y'], dtype=np.float32)).astype(np.float32)
    np_z = (np.array(data_234['z'], dtype=np.float32)).astype(np.float32)
    np_i = np.zeros(shape=(np_z.size), dtype=np.float32).astype(np.float32)
    points_32 = np.transpose(np.vstack((np_x, np_y, np_z, np_i)))
    points_32.tofile(output)

path = "output"
data_paths = os.listdir(path)
for data_path in data_paths:
    out_path = "binfolder/" + data_path.replace('.csv', '.bin')
    data_path = os.path.join(path, data_path)
    print(data_path)
    pointsTobin(data_path, out_path)
  • csv转pcd
import os
import numpy as np
import pandas as pd


def pointsTopcd(input, output):
    data = pd.read_csv(input, encoding='utf-8')  # 读取csv文件
    data_234 = data.iloc[:, 0:3]  
    data_234 = np.array(data_234)  
    points = data_234
  
    PCD_FILE_PATH = output
    if os.path.exists(PCD_FILE_PATH):
        os.remove(PCD_FILE_PATH)

    handle = open(PCD_FILE_PATH, 'a')

    # 得到点云点数
    point_num = len(data)

    # pcd头部
    handle.write(
        '# .PCD v0.7 - Point Cloud Data file format\nVERSION 0.7\nFIELDS x y z\nSIZE 4 4 4\nTYPE F F F\nCOUNT 1 1 1')
    string = '\nWIDTH ' + str(point_num)
    handle.write(string)
    handle.write('\nHEIGHT 1\nVIEWPOINT 0 0 0 1 0 0 0')
    string = '\nPOINTS ' + str(point_num)
    handle.write(string)
    handle.write('\nDATA ascii')

    # 依次写入点
    for i in range(point_num):  # 这里我只用到了前三列,故只需展示0,1,2三列 读者可根据自身需要写入其余列
        string = '\n' + str(points[i, 0]) + ' ' + str(points[i, 1]) + ' ' + str(points[i, 2])
        handle.write(string)
    handle.close()


path = "output"
data_paths = os.listdir(path)
for data_path in data_paths:
    out_path = "pcdfolder/" + data_path.replace('.csv', '.pcd')
    data_path = os.path.join(path, data_path)
    print(data_path)
    pointsTopcd(data_path, out_path)
  • 2
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值