python 点云处理 使用plyfile库写.ply文件

2023-11-03

点云处理时,关使用python读写.ply文件的博客并不多,而且要么是从ply文件头部开始写起,要么是csdn收费的。所以这里写一个博客记录下。

1. 读ply文件

这个很简单,具体可以看官方文档:
在这里插入图片描述
代码:
首先安装plyfile库:

pip install plyfile

然后定义函数:

from plyfile import PlyData,PlyElement
def read_ply(filename):
    """ read XYZ point cloud from filename PLY file """
    plydata = PlyData.read(filename)
    pc = plydata['vertex'].data
    pc_array = np.array([[x, y, z] for x,y,z in pc])
    return pc_array

2.写ply文件

这个比较麻烦,原文档说的也不是很清楚。

from plyfile import PlyData,PlyElement
def write_ply(save_path,points,text=True):
    """
    save_path : path to save: '/yy/XX.ply'
    pt: point_cloud: size (N,3)
    """
    points = [(points[i,0], points[i,1], points[i,2]) for i in range(points.shape[0])]
    vertex = np.array(points, dtype=[('x', 'f4'), ('y', 'f4'),('z', 'f4')])
    el = PlyElement.describe(vertex, 'vertex', comments=['vertices'])
    PlyData([el], text=text).write(save_path)

这里假定输入的点云数据是只有xyz坐标信息的(即代码中的"vertex"),没有将面元法向颜色等写进去。
如果需要的话:
再加入以下几行代码即可

    face = PlyElement.describe(np.array(face_data,dtype=[......]),'face')
    color = PlyElement.describe(np.array(color_data,dtype=[......]),'color')
    normals = PlyElement.describe(np.array(normals_data,dtype=[......]),'normals')
    # 全部写入
    PlyData([point, face,color,normals]).write(save_path)

数据类型需要对应到每一个数据元素的类型。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

python 点云处理 使用plyfile库写.ply文件 的相关文章

  • 异常检测的总结性介绍

    1 异常检测 1 1 什么是异常值 在机器学习中 异常检测和处理是一个比较小的分支 或者说 是机器学习的一个副产物 因为在一般的预测问题中 模型通常是对整体样本数据结构的一种表达方式 这种表达方式通常抓住的是整体样本一般性的性质 而那些在这
  • python基础案例练习一

    员工管理系统练习 1 显示系统菜单 2 获得用户输入的菜单 3 根据用户的输入判断执行操作 存储员工信息 employee def show menu print 20 员工管理系统菜单 20 print 1 添加员工信息 print 2
  • python的with关键字

    前言 with表达式其实是try finally的简写形式 但是又不是全相同 格式 格式 with context as var pass 其中的context是一个表达式 返回的是一个对象 var用来保存context表达式返回的对象 可
  • C 、C++ 、Java、Python、JavaScript数据类型对比介绍

    C C Java Python JavaScript数据类型对比介绍 C C Java Python JavaScript数据类型对比如下 C语言 静态类型语言 需要在声明变量时指定类型 基本数据类型包括 整型 int 通常分为有符号 si
  • 运行python脚本时传入参数的几种方式(接收外部参数)

    运行python脚本时传入参数时三种格式对应不同的参数解析方式 分别为sys argv argparse tf app run 前两者是python自带的功能 后者是tensorflow提供的便捷方式 1 sys argv sys模块是很常
  • 2019零基础如何学好Python?学习Python的策略是什么?

    跟几个IT界的大佬提起python 他们说零基础学好python很简单 python进阶需要花费写气力 都说Python简单易学 那么零基础如何学好Python 有哪些必须学的知识 学习的策略技巧有哪些 今天这篇文章将会给你启发 Pytho
  • pip安装yaml出错问题及解决方案

    pip安装yaml出错问题及解决方案 在使用Python开发过程中 可能会遇到需要安装第三方库的情况 而有时候我们在使用pip install安装某些库时 会遇到一些错误提示 其中就有可能会出现 ERROR Could not find a
  • Python学习笔记 - 阿里云天池Python训练营打卡(3)

    目录 1 阿里云天池Python教程链接 3 2 函数 2 1 函数定义 2 2 函数文档 2 3 help方法 2 4 函数参数 2 5 函数的返回值 2 6 变量作用域 2 7 模块 函数的导入 3 Lambda 匿名函数 3 1 La
  • Python —— 第四部分 面向对象程序设计

    第四部分 面向对象程序设计 4 1 基本概念 4 2 类的定义与使用 4 3 self 参数 4 4 类成员与实例成员 4 4 1 修改属性的值 4 5 成员 4 6 方法 4 7 继承机制 4 7 1 子类的方法 init 4 7 2 给
  • Python 文件操作(IO)

    文章目录 前言 一 打印到屏幕 print 二 读取键盘输入 1 raw input 2 input 三 读写文件 读文件 写文件 前言 和其它编程语言一样 Python 也具有操作文件 I O 的能力 比如打开文件 读取和追加数据 插入和
  • Python入门_使用while循环计算1-100之间偶数和

    案例 计算1 100之间所有偶数的和 i 1 定义一个变量sum为0 用来存放和 sum 0 while i lt 100 每次sum和i相加 if i 2 0 sum i i 1 执行完之后 打印sum的值 print 1 100之间偶数
  • python水仙花数

    题目 打印出所有的 水仙花数 所谓 水仙花数 是指一个三位数 其各位数字立方和等于该数本身 例如 153是一个 水仙花数 因为153 1的三次方 5的三次方 3的三次方 def narcissus narcissus number grou
  • Python的学习过程中not enough values to unpack (expected 2, got 1)解决方案

    这是一篇在自学过程中debug的笔记 愿我们一同进步 问题描述 跟着小甲鱼一起学习Python 在学习到 文件 的时候有一个代码任务 内容是根据两个人物之间的三段对话对话进行分割提取操作 运行时报错 主要报错为not enough valu
  • pip : 无法将“pip”项识别为 cmdlet、函数、脚本文件或可运行程序的名称。请检查名称的拼写,如果包括路径,请确保路径正确,然后再试一次。

    换了新电脑 在新电脑中安装了pycharm 但是在使用pip install下载相关库时 出现pip 无法将 pip 项识别为 cmdlet 函数 脚本文件或可运行程序的名称 请检查名称的拼写 如果包括路径 请确保路径正确 然后再试一次 的
  • Python学习-----无序序列1.0(字典的创建、查看、添加、修改、删除/替换)

    目录 前言 字典是什么 字典的特点 1 字典的创建 1 直接创建 2 dict 函数创建 2 字典的查询 1 get 函数 2 获取字典一组内容 3 字典键值对的添加 1 直接添加 2 setdefault 函数 4 字典的修改 updat
  • python3 隐藏print的标准输出

    在使用python调用函数时 想将函数中的print输出禁止掉又不想改函数的代码 可以定义如下HiddenPrints类解决 class HiddenPrints def enter self self original stdout sy
  • Python学习(三)条件运算

    Python学习 三 条件运算 之前讲解了Python中的一些基本语法 今天我们来讲一下Python中的条件运算 一 条件运算符 在Python中我们可以用条件运算符进行最基本的条件判断 基本语法为 语句1 if 条件判断式 else 语句
  • Python03-pytest框架

    Python03 pytest测试框架 pytest简介 支持参数化可以细分控制测试用例 支持简单的单元测试和复杂的功能测试 还支持selenium appium等自动化测试 接口自动化测试 支持第三方插件 可以自定义扩展 pytestht
  • Python入门到实战(十一)无监督学习、KMeans、KNN、实现图像分割、监督学习VS无监督学习

    Python入门到实战 十一 无监督学习 KMeans KNN 实现图像分割 监督学习VS无监督学习 无监督学习unsupervised learning 特点 应用 K均值聚类 核心流程 核心公式 KMeans VS KNN 实战 KMe
  • python-测试代码

    目录 介绍 测试函数 单元测试和测试用例 可通过的测试 不能通过的测试 测试未通过时怎么办 添加新测试 测试类 各种断言方法 一个要测试的类 测试AnonymousSurvey类 方法setUp 介绍 在本章中你会学习如何使用Python模

随机推荐

  • lua元表与面向对象

    lua元表 扩展普通表的行为 setmetatable tab mematable 如果元表中存在 mematable setmematable会失效 mematable可以保护元表 禁止访问或修改元表中的成员 getmetatable t
  • 原型对象和原型链的理解

    大家都应该知道构造函数很好用 但是构造函数也存在浪费内存的问题 function Star uname age this uname uname this age age this sing function console log 我会唱
  • 网御ACM上网行为管理系统存在SQL注入漏洞【小龙检测工具已更公开】

    网御ACM上网行为管理系统bottomframe cgi接口存在SQL注入漏洞 一 系统简介 二 漏洞描述 三 影响版本 四 fofa查询语句 五 漏洞复现 执行md5 1 函数 执行user 六 POC EXP 七 修复建议 免责声明 请
  • vscode 更新报错,中止以后软件打不开的修复方式

    前言 今天打开 vscode 正准备敲代码的时候 发现 vscode 提示升级 于是想也不想的点了升级 当然 你也可以在这里手动检查程序是否升级了 然后悲剧就发生了 升级到一半的时候 提示进行不下去了 问我是否要重试 或者终止 当时没截图
  • Qt天气预报

    目录 环境 weather pro main cpp weather h weather cpp weatherdata h 今天 未来6天数据体 weathertool h 获取城市编码工具类 ui weather h UI设计器生成的头
  • 【批处理DOS-CMD命令-汇总和小结】-利用cmd命令生成随机数、生成指定范围的随机数

    零 转载链接 bat脚本的基本命令语法 整合侠 博客园 一 cmd命令的随机数取值范围 RANDOM 系统变量只能返回 0 到 32767 之间的任意十进制数字 2的15次方等于32768 上面的0 32767实际就是15位二进制数的范围
  • git----pathspec ‘ ‘ did not match any file(s) known to git

    一 问题描述 场景 在前辈刚刚提交了自己的分支之后 我想切换过去 却发生了如下错误 在这之前你得确认你本地的代码提交且push 如果你的分支上没有代码改动的话 按如下操作解决 二 问题解决 首先查看分支情况 如果没有你想切换的分支名字 先获
  • OLED拼接屏,从选购到安装,手把手教您

    OLED拼接屏是一种高端的显示屏 它由多个OLED屏幕拼接而成 可以实现更大尺寸的显示效果 在使用OLED拼接屏时 需要注意一些细节 下面是OLED拼接屏的教程 1 选择合适的OLED屏幕 在选择OLED屏幕时 需要考虑屏幕的尺寸 分辨率
  • 嘉立创元器件及封装导入AD20

    第一步 建一个集成库 在集成库里添加原理图库和PCB元件库 第二步 在嘉立创软件或者网页里找到你要导入AD的元件 第三歩 将元件的原理图和封装分别以AD的格式导出 第四步 将导出的原理图和封装导入AD 第五步 将原理图生成原理图库 复制后粘
  • android studio第三方框架总结

    第三方框架gradle添加 UI Material design和Support library控件 compile com android support appcompat v7 25 3 1 compile com android s
  • 搭建一个Fabric网络

    生成相关证书文件 首先Fabric提供了一些工具用于生成所需的文件 cryptogen模块会根据提供的配置文件生成后续模块运行过程中需要的证书和数据文件 cryptogen常用命令 generate用于根据配置文件生成证书 showtemp
  • DS18B20使用说明

    DS18B20 温湿度监测模块 芯片介绍 基础介绍 引脚介绍 DS18B20是单总线协议的典型代表 同时也是单总线协议最广泛的应用场景 是常用的数字温度传感器 其输出的是数字信号 具有体积小 硬件开销低 抗干扰能力强 精度高的特点 DS18
  • 动态SQL,模糊查询,关联查询

    一 和 的区别 相同点 这两个都是占位符 用来指定传入sql的参数 不同点 这个是预编译的 不会发生sql注入 如果需要使用拼接的话可以使用sql的内置函数contact 这个是将其中的变量通过字符串拼接的方式插入到sql语句中的 容易发生
  • CodeSmith 使用教程(10): CodeTemplateInfo 对象

    通过CodeTemplateInfo对象可以获取代码模板文件本身的一些信息 比如文件名 源语言 编码方法 其支持的属性有 属性名 描述 CodeBehind 该模板的Code behind的文件名或者模板不使用CodeBehind时为空字符
  • Gromacs初探

    1 Gromacs是用来干什么的 分子动力学模拟是分子模拟中最接近实验条件的模拟方法 能够从原子层面给出体系的微观演化过程 直观地展示实验现象发生的机理与规律 gromacs就是一个用于分子动力学模拟的程序 2 Gromacs的步骤 以T4
  • 项目部署K8s中excel导出模板名乱码

    问题描述 线下环境测试问题 部署到k8s上时 导出报表1时 导出时用的时报表2的模板 进入镜像中查询template下的导出模板 发现模板名都是问号 乱码 而且数量少了一个 可能由于这两个模板的名字都是5个汉字 导致tomcat解析时变成了
  • 还在select 1 union select 2 union……?

    要目录干啥 用Union吧 太长 用values吧 神奇 引申Values用法 用Union吧 太长 有时候 要临时建个短列表 2047以内的纯数字还不错 有个表 也够用 select number from master spt valu
  • 人脸识别、无人驾驶背后:是谁在造人工大脑?

    NEW 关注剁手日记视频号 最新视频 OPPO下一代屏下镜头技术 这可能才是你想要的全面屏 来源 科技新知 文 樟稻 编辑 伊页 转瞬之间 ILSVRC比赛 又称ImageNet比赛 已经停办了四年 作为机器视觉领域最受追捧也是最具权威的学
  • 【马士兵】Python基础--07(列表)

    Python基础 07 文章目录 Python基础 07 列表的添加操作 列表中的删除操作 列表元素的修改操作 对列表的排序操作 列表生成式 列表的添加操作 列表的添加元素有四种方法 列表的添加操作不改变列表的id值 所以相当于没有新的列表
  • python 点云处理 使用plyfile库写.ply文件

    点云处理时 关使用python读写 ply文件的博客并不多 而且要么是从ply文件头部开始写起 要么是csdn收费的 所以这里写一个博客记录下 1 读ply文件 这个很简单 具体可以看官方文档 代码 首先安装plyfile库 pip ins