代码在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 数据 三种方法相关推荐

  1. python读取文本文件的三种方法

    参考链接 python读取文本文件的内容,有三种方法. read().readline().readlines() read() read()是最简单的一种方法,一次性读取文件的所有内容放在一个大字符 ...

  2. python读取文件的三种方式_python中读取文件的f.seek()方法

    用于二进制文件中 F.seek方法 作用: 设置读写位置 F.seek(偏移量, whence=相对位置) 偏移量 大于0的数代表向文件末尾方向移动的字节数 小于0的数代表向文件头方向中移动的字节数 ...

  3. python调用cmd命令释放端口_详解python调用cmd命令三种方法

    目前我使用到的python中执行cmd的方式有三种 使用os.system("cmd") 该方法在调用完shell脚本后,返回一个16位的二进制数,低位为杀死所调用脚本的信号号码, ...

  4. 81. read readline readlines 读取文件的三种方法

    81. read readline readlines 读取文件的三种方法 文章目录 81. read readline readlines 读取文件的三种方法 1. 读取文件的三种方法 2. rea ...

  5. 测试Python下载图片的三种方法

    简 介: 通过Python软件包对网络URL图片链接进行下载,可以加快后期处理.本文测试了urllib, request两个软件包对图片进行下载效果.如果图片原网页有了防止下载机制,是无法下载图片. ...

  6. python使用方法视频-Python读取视频的两种方法(imageio和cv2)

    用python读取视频有两种主要方法,大家可依据自己的需求进行使用. 方法一: 使用imageio库,没有安装的可用pip安装或自己下载,安装好后重启终端即可调用. import pylab impo ...

  7. python学习音频-详解python播放音频的三种方法

    第一种 使用pygame模块 pygame.mixer.init() pygame.mixer.music.load(self.wav_file) pygame.mixer.music.set_vol ...

  8. python可以播放音乐吗_详解python播放音频的三种方法

    第一种 使用pygame模块 pygame.mixer.init() pygame.mixer.music.load(self.wav_file) pygame.mixer.music.set_vol ...

  9. mybatis批量更新数据三种方法效率对比

    探讨批量更新数据三种写法的效率问题. 实现方式有三种, 1> 用for循环通过循环传过来的参数集合,循环出N条sql,需要在db链接url后面带一个参数  &allowMultiQuer ...

最新文章

  1. Android 模拟机自定义屏幕的尺寸
  2. sql 随机数高效率算法
  3. 在 MongoDB 上模拟事务操作来实现支付
  4. STM32的PA15、PB3、 PB4管脚作普通管脚的解决办法
  5. Permission denied: make_sock: could not bind to address 端口问题解决
  6. PHP性能调优,PHP慢日志---善用php-fpm的慢执行日志slow log,分析php性能问题
  7. mybatis中#{}和${}
  8. 大数据将如何重塑亚洲企业
  9. Linux服务器运行环境搭建(四)——Tomcat安装
  10. Windows 中实现 Java 本地方法
  11. 初学必看,NFine框架结构加MVC快速开发平台登录流程梳理(附源码)
  12. hybird app
  13. Android开发常见问题汇总
  14. 超级好上手的告白小程序
  15. 发布园友设计的新款博客皮肤BlueSky
  16. C++: #define中的三个特殊符号:#,##,#@
  17. 三本 计算机专业,四川哪些三本大学的计算机专业最好?
  18. 浅谈Md5+Salt加密
  19. Echarts地图自定义图标Symbol同时动态更改图标进行切换显示
  20. MTK平台Metadata的加载(4)—Q版本后

热门文章

  1. C++继承机制下的析构函数
  2. 第四届中国国际大数据大会务实推进应用落地
  3. codeforces 665B Shopping
  4. idea控制台输出乱码
  5. mysql TableMap id递增问题
  6. JSP标签JSTL(4)--URL
  7. 在ASP.NET MVC5中使用特性路由
  8. 初看jQuery,比较dojo与jQuery的不同点
  9. [转]配置子报表和钻取报表
  10. PAT甲级1077 Kuchiguse:[C++题解]字符串、最长公共后缀