1. 读点云的3种方式

#第一种
# pip3 install python-pcl
import pcl
#pcd_ndarray = pcl.load(args.pcd_path).to_array()[:, :3] #不要intensity
pcd_ndarray = pcl.load_XYZI(args.pcd_path).to_array()[:, :4]
point_num = pcd_ndarray.shape[0]
# shape属性可以获取矩阵的形状(例如二维数组的行列),获取的结果是一个元组#第二种
def read_pcd(pcd_path):lines = []num_points = Nonewith open(pcd_path, 'r') as f:for line in f:lines.append(line.strip())if line.startswith('POINTS'):num_points = int(line.split()[-1])assert num_points is not Nonepoints = []for line in lines[-num_points:]:x, y, z, i = list(map(float, line.split()))#这里没有把i放进去,也是为了后面 x, y, z 做矩阵变换的时候方面#但这个理解我选择保留, 因为可能把i放进去也不影响代码的简易程度points.append((np.array([x, y, z, 1.0]), i))return points#第三种
def load_pcd_to_ndarray(pcd_path):with open(pcd_path) as f:while True:ln = f.readline().strip()if ln.startswith('DATA'):breakpoints = np.loadtxt(f)points = points[:, 0:4]return points #第四种(需要源码安装pypcd)链接在底部
import argparse
from pypcd import pypcd
import numpy as np
parser = argparse.ArgumentParser()
parser.add_argument('--pcd_path', default='', type=str)
args = parser.parse_args()def read_pcd(pcd_path):pcd = pypcd.PointCloud.from_path(pcd_path)pcd_np_points = np.zeros((pcd.points, 5), dtype=np.float32)print(pcd.pc_data['x'])pcd_np_points[:, 0] = np.transpose(pcd.pc_data['x'])pcd_np_points[:, 1] = np.transpose(pcd.pc_data['y'])pcd_np_points[:, 2] = np.transpose(pcd.pc_data['z'])pcd_np_points[:, 3] = np.transpose(pcd.pc_data['intensity'])pcd_np_points[:, 4] = np.transpose(pcd.pc_data['is_ground'])del_index = np.where(np.isnan(pcd_np_points))[0]pcd_np_points = np.delete(pcd_np_points, del_index, axis=0)return pcd_np_pointsread_pcd(args.pcd_path)

在python3中使用pypcd读取点云数据

2. 写点云的两种方式

HEADER = '''\
# .PCD v0.7 - Point Cloud Data file format
VERSION 0.7
FIELDS x y z intensity
SIZE 4 4 4 4
TYPE F F F F
COUNT 1 1 1 1
WIDTH {}
HEIGHT 1
VIEWPOINT 0 0 0 1 0 0 0
POINTS {}
DATA ascii
'''def write_pcd(points, save_pcd_path):n = len(points)lines = []for i in range(n):x, y, z, i, is_g = points[i]lines.append('{:.6f} {:.6f} {:.6f} {}'.format( \x, y, z, i))with open(save_pcd_path, 'w') as f:f.write(HEADER.format(n, n))f.write('\n'.join(lines))def write_pcd(points, save_pcd_path):with open(save_pcd_path, 'w') as f:f.write(HEADER.format(len(points), len(points)) + '\n')np.savetxt(f, points, delimiter = ' ', fmt = '%f %f %f %d')

python 读写pcd相关推荐

  1. python读写压缩文件使用gzip和bz2

    python读写压缩文件使用gzip和bz2 #读取压缩文件 # gzip compression import gzip with gzip.open('somefile.gz', 'rt') as ...

  2. python读写二进制文件(读写字节数据)

    python读写二进制文件(读写字节数据) 你想读写二进制文件,比如图片,声音文件等就是常见的二进制文件. 使用模式为 rb 或 wb 的 open() 函数来读取或写入二进制数据.比如: # Rea ...

  3. python 读写 csv

    python 读写 csv 列表写入csv # 列表写入csv import csvheaders = ['列1', '列2', '列3', '列4', '列5']rows = [["1行1 ...

  4. python读写csv时中文乱码问题解决办法

    参考1 参考2 参考3 CSV是英文Comma Separate Values(逗号分隔值)的缩写,顾名思义,文档的内容是由 "," 分隔的一列列的数据构成的,可以使用excel和 ...

  5. python输出csv文件中文乱码-python读写csv时中文乱码问题解决办法

    CSV是英文Comma Separate Values(逗号分隔值)的缩写,顾名思义,文档的内容是由 "," 分隔的一列列的数据构成的,可以使用excel和文本编辑器等打开.CSV ...

  6. python文件对象提供了3个读方法、分别是-Python读写文件模式和文件对象方法实例详解...

    本文实例讲述了Python读写文件模式和文件对象方法.分享给大家供大家参考,具体如下: 一. 读写文件模式 利用open() 读写文件时,将会返回一个 file 对象,其基本语法格式如: open ( ...

  7. python处理excel表格数据-零基础使用Python读写处理Excel表格的方法

    引 由于需要解决大批量Excel处理的事情,与其手工操作还不如写个简单的代码来处理,大致选了一下感觉还是Python最容易操作. 安装库Python环境 首先当然是配环境,不过选Python的一个重要 ...

  8. 使用python用什么软件-Python读写Excel表格,就是这么简单粗暴又好用

    Python读写Excel表格,就是这么简单粗暴又好用 2019-04-18 13:45:31 11点赞 107收藏 1评论 最近在做一些数据处理和计算的工作,因为数据是以.csv格式保存的,因此刚开 ...

  9. python文件读取输出-Python 读写文件中数据

    1 需求 在文件 h264.txt 中的数据如图1,读入该文件中的数据,然后将第1列的地址删除,然后将数据输出到h264_out.txt中: 图1 h264.txt 数据截图 图2 输出文件 h264 ...

  10. python读取txt文件写入-Python读写txt文本文件的操作方法全解析

    一.文件的打开和创建 >>> f = open('/tmp/test.txt') >>> f.read() 'hello python! hello world! ...

最新文章

  1. 顺丰固定翼无人机来了,未来你的快递将一路“飞”到你手中
  2. 160809230张钊
  3. 关于 paddingFactor 及 COLLMOD 的设置值
  4. PHP操作MySQL数据库(连接、增删改操作)
  5. 静态链接库与动态链接库的区别
  6. 单片机控制小风扇马达c语言,模拟风扇控制电路(单片机C程序设计)
  7. 定值保险计算举例_保险公司的“开门红”又要来了!理财险真的值得买吗?
  8. mysql empty table_【MySQL】 empty table and delete table.
  9. 如何格式化电脑_内存卡格式化不了怎么办?教你两招
  10. (图论) Tarjan 算法
  11. 清华陈丹琦:如何让「大模型」变小
  12. linux服务器巡检工作的意义,Linux服务器巡检报告
  13. 电脑系统或者office系列使用小马激活工具,电脑开机桌面出现假的Edge浏览器
  14. ESP8266 alios things 自带 linkkitapp OTA 更新失败
  15. 当代中国最贵的汉字是什么?
  16. 太阳能基站光照跟随逐日PLC控制实训设备QY-PV26
  17. 【C语言管理系统】 医院住院病人信息管理系统
  18. python绘图——绘制正负区分的柱形图[ax.bar()]
  19. PS 之AD命令之Get-ADuser!
  20. Java中出现[Ljava.lang.String的问题

热门文章

  1. 最大团(最大完全子图)
  2. 手机html在哪个文件里,手机相册在哪个文件夹,教您手机图片存放在哪里
  3. ansys怎么删除线段_如何彻底删除ansys
  4. Google图片url搜索测试
  5. 二维数组行列互调显示出来。如:123456789变成147258369。
  6. DragonBones(龙骨动画)在Unity端的使用
  7. Nginx动静分离经典案例配置
  8. 你真的懂协程 (Coroutine) 吗 ? Kotlin Coroutines — Suspending Functions
  9. 华为路由器 wifi网速慢解决办法
  10. python绘图 ——蜡笔小新