用python读写pcl.pcd文件。

pypcd的Python项目详细描述


`` Pypcd``
==


什么?
----


pure python模块读取和写入点云存储在
`pcd文件格式<;http://point clouds.org/documentation/tutorials/pcd_file_format.php>;` ` ` `,

--BR/> BR/>你想在不写C++的BR/>的情况下搞乱你的点云数据,等待模板重写PCL代码的等待时间。
BR/>你试图得到一些Python绑定,用于PCL编译
并且刚刚放弃。
BR/>它是如何工作的?
----

它解析PCD头并将数据(无论是"ascii"格式、
"binary"格式还是"binary"压缩格式)加载为
"numpy<;http://www.numpy.org>;`"结构化数组"。它创建了一个``point cloud`
类的
实例,将点云数据作为``pc_data```包含,并为i/o和元数据访问提供了一些方便的函数。
有关点云结构的一些信息,请参阅``pypcd.py``中的注释。

代码::python

import pypcd
]-=pc.pc_data['x'].mean()

代码::bash

pip安装pypcd

就这样!您可能需要安装可选的依赖项,例如"pandas
<;https://pandas.pydata.org>;`。

您还可以克隆此repo并使用setup.py。

…代码::bash


不是依赖项。
您不需要使用catkin安装此软件包--使用"pip"应该没问题--
,但如果您想这样做的话:

步骤:

代码::bash
做这样的事:

…代码::python

import pypcd
import rospy
from sensor_msgs.msg import pointcloud2



def cb(msg):
pc=pointcloud.from_msg(msg)
pc.save('foo.pcd',compression='binary_compressed')
pc.pc_data['x']*=-1
outmsg=pc.to_msg()
您可能需要设置头
outmsg.header=msg.header
pub.publish(outmsg)


sub=rospy.subscriber('incloud',pointcloud2)
pub=rospy.publisher('outcloud',pointcloud2,cb)
rospy.init('pypcd_node')
rospy.spin()





这是漂亮的、可生产的代码吗?
----------


没有。


它还能做什么?
---------


随着时间的推移,有一堆功能已经积累起来了,其中大部分功能还未经过测试。
没有特别的顺序,

-支持"ascii"、"binary"和"binary"压缩数据。
后者需要"lzf"模块。
-解码和加密将rgb赋成单个"float32"数字。如果
你不知道我在说什么,就认为自己很幸运。
-将云指向"pandas<;https://pandas.pydata.org>;""dataframes"。
这尤其有用,
由于"pandas"功能强大,使得各种操作(如合并点云或操作值)变得容易。
从概念上讲,数据帧与点云格式非常匹配,因为
实际上许多点云具有异构数据类型-例如
` x`,`y`和`z`是浮点数字段,而'label`是整数。
-转换到和从'ros<;http://www.ros.org>;``upou pointcloud2
消息。
需要安装有python绑定的ros``sensor`msgs``包。
此功能使用jon binney und开发的代码er
bsd许可证,包含为"numpy pc2.py"。

它不能做什么?
---------



"点云"中的元数据字段与"PC数据"中的数据之间没有同步。如果不更新元数据字段就改变"PC数据"的形状,就会遇到麻烦。

r/>
虽然填充和计数大于1的字段似乎可以工作,但这是PCD格式的一个特殊方面,因此要小心。
如果您想安全,最好不要使用这两种格式——只需将字段的每个组件命名为像"field"00"、"field_01```,等等。


它也不能在python 3上运行,但是有一个pr可以解决这个问题,这个问题可能在不久的将来会被解决。


----

---------------------------------------

谢谢!您可以提交拉取请求。但老实说,我不太善于跟上github的步伐:(



---


-各种操作都有更好的api。
-清理、清除cruft。
-为文件类型转换等常见用例添加一个cli。
-更好地支持结构化点云和测试.
-更好的测试。
-更好的文档。更多示例。
-更多填充测试
-改进多计数字段的处理
-更好地支持rgb无意义
-导出到ply?
-找出是否可以将"pointcloud"用作单个单词。
-在pypi中打包数据资产?



credits
----


通过查看
`Matlab
PCL<;https://www.mathworks.com/matlabcentral/fileexchange/40382-Matlab-to-point-cloud-library了解压缩点云数据的代码?requesteddomain=true>;` `.

@wkentaro进行一些小的更改。

w.ros.org>;` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` `--

*在pypi上首次发布。




欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java更新来自AWS SNS客户端的SMS发送结果   php Java:HTTP post多维数组   Java哈希表值求和   java将Vaadin应用程序更改为使用安全websocket连接   javaprintf和新行   重新加载Java枚举   反射以一种安全的方式调用API方法,防止JAVA中库版本之间的更改   java在构建maven项目时无法运行“egrep”   需要初始化对象时使用的java设计模式?   java为什么当这个布尔值与我的正则表达式匹配时没有改变?   java(JTabbedPane)透明与Nimbus不同,不适用于L&F   java准备语句失败   关于从API读取数据的java CouchDB问题