python用pyrealsense2库写一个保存点云的函数
时间: 2024-03-02 15:53:00 浏览: 137
使用Kinect获取点云并储存
好的,下面是一个使用 pyrealsense2 库保存点云的 Python 函数:
```python
import pyrealsense2 as rs
import numpy as np
def save_pointcloud(filename):
# 配置 RealSense Pipeline
pipeline = rs.pipeline()
config = rs.config()
config.enable_stream(rs.stream.depth, 640, 480, rs.format.z16, 30)
config.enable_stream(rs.stream.color, 640, 480, rs.format.bgr8, 30)
# 启动 Pipeline
pipeline.start(config)
# 创建 PointCloud 对象
pc = rs.pointcloud()
try:
# 等待一帧数据
frames = pipeline.wait_for_frames()
# 将深度图和彩色图对齐
align = rs.align(rs.stream.color)
frames = align.process(frames)
# 获取深度图和彩色图
depth_frame = frames.get_depth_frame()
color_frame = frames.get_color_frame()
# 计算点云
points = pc.calculate(depth_frame)
# 获取点云的顶点和颜色信息
vtx = np.asanyarray(points.get_vertices())
tex = np.asanyarray(color_frame.get_data())
# 保存到文件
np.savetxt(filename + '_vtx.txt', vtx)
np.savetxt(filename + '_tex.txt', tex)
finally:
# 停止 Pipeline
pipeline.stop()
```
这个函数会启动 RealSense 摄像头并捕获一帧深度图和彩色图,然后使用 `rs.pointcloud()` 对象将深度图转换为点云,并将结果保存到两个文件中:`filename_vtx.txt` 和 `filename_tex.txt`。其中 `vtx` 存储点云的顶点坐标,`tex` 存储对应的颜色信息。
使用时只需要调用 `save_pointcloud()` 函数并传入保存的文件名即可。例如:
```python
save_pointcloud('my_pointcloud')
```
这将保存点云到 `my_pointcloud_vtx.txt` 和 `my_pointcloud_tex.txt` 两个文件中。
阅读全文