python读取 pcd 数据 三种方法
代码在git
import open3d as o3d
import numpy as npdef read_pcd(file_path):pcd = o3d.io.read_point_cloud(file_path)# print(np.asarray(pcd.points))colors = np.asarray(pcd.colors) * 255points = np.asarray(pcd.points)# print(points.shape, colors.shape)
# return np.concatenate([points, colors], axis=-1)return pointsa=read_pcd('b1.pcd')print(a)#第二种
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, i])))return pointsa0=read_pcd('b1.pcd')
a=np.array(a0)
print(a)
#第三种
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
a0=read_pcd('b1.pcd')
a=np.array(a0)
print(a)
#第四种(需要源码安装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_points# read_pcd(args.pcd_path)# #第一种
# # 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属性可以获取矩阵的形状(例如二维数组的行列),获取的结果是一个元组
python读取 pcd 数据 三种方法相关推荐
- python读取文本文件的三种方法
参考链接 python读取文本文件的内容,有三种方法. read().readline().readlines() read() read()是最简单的一种方法,一次性读取文件的所有内容放在一个大字符 ...
- python读取文件的三种方式_python中读取文件的f.seek()方法
用于二进制文件中 F.seek方法 作用: 设置读写位置 F.seek(偏移量, whence=相对位置) 偏移量 大于0的数代表向文件末尾方向移动的字节数 小于0的数代表向文件头方向中移动的字节数 ...
- python调用cmd命令释放端口_详解python调用cmd命令三种方法
目前我使用到的python中执行cmd的方式有三种 使用os.system("cmd") 该方法在调用完shell脚本后,返回一个16位的二进制数,低位为杀死所调用脚本的信号号码, ...
- 81. read readline readlines 读取文件的三种方法
81. read readline readlines 读取文件的三种方法 文章目录 81. read readline readlines 读取文件的三种方法 1. 读取文件的三种方法 2. rea ...
- 测试Python下载图片的三种方法
简 介: 通过Python软件包对网络URL图片链接进行下载,可以加快后期处理.本文测试了urllib, request两个软件包对图片进行下载效果.如果图片原网页有了防止下载机制,是无法下载图片. ...
- python使用方法视频-Python读取视频的两种方法(imageio和cv2)
用python读取视频有两种主要方法,大家可依据自己的需求进行使用. 方法一: 使用imageio库,没有安装的可用pip安装或自己下载,安装好后重启终端即可调用. import pylab impo ...
- python学习音频-详解python播放音频的三种方法
第一种 使用pygame模块 pygame.mixer.init() pygame.mixer.music.load(self.wav_file) pygame.mixer.music.set_vol ...
- python可以播放音乐吗_详解python播放音频的三种方法
第一种 使用pygame模块 pygame.mixer.init() pygame.mixer.music.load(self.wav_file) pygame.mixer.music.set_vol ...
- mybatis批量更新数据三种方法效率对比
探讨批量更新数据三种写法的效率问题. 实现方式有三种, 1> 用for循环通过循环传过来的参数集合,循环出N条sql,需要在db链接url后面带一个参数 &allowMultiQuer ...
最新文章
- Android 模拟机自定义屏幕的尺寸
- sql 随机数高效率算法
- 在 MongoDB 上模拟事务操作来实现支付
- STM32的PA15、PB3、 PB4管脚作普通管脚的解决办法
- Permission denied: make_sock: could not bind to address 端口问题解决
- PHP性能调优,PHP慢日志---善用php-fpm的慢执行日志slow log,分析php性能问题
- mybatis中#{}和${}
- 大数据将如何重塑亚洲企业
- Linux服务器运行环境搭建(四)——Tomcat安装
- Windows 中实现 Java 本地方法
- 初学必看,NFine框架结构加MVC快速开发平台登录流程梳理(附源码)
- hybird app
- Android开发常见问题汇总
- 超级好上手的告白小程序
- 发布园友设计的新款博客皮肤BlueSky
- C++: #define中的三个特殊符号:#,##,#@
- 三本 计算机专业,四川哪些三本大学的计算机专业最好?
- 浅谈Md5+Salt加密
- Echarts地图自定义图标Symbol同时动态更改图标进行切换显示
- MTK平台Metadata的加载(4)—Q版本后