Realsense学习--RGBD与点云显示

所使用到的主要模块介绍

这里主要想要实现Realsense深度相机的点云建模并显示:

  1. pyrealsense2 1,这是intel的官方库的python版本,主要实现对相机所采集的RGB与深度图像进行处理;
  2. numpy ,对图像数据进行转换保存;
  3. cv2 ,实现RGB与深度图像的显示;
  4. open3d2重点库,实现利用RGBD数据进行点云重建,并显示点云;

直接上代码

代码来github 3,我主要就是整理了一下并且添加了中文注释~

import pyrealsense2 as rs
import numpy as np
import cv2
import time
import open3d as o3d 
import os
import sys

view_ind = 0
breakLoopFlag = 0
backgroundColorFlag = 1


# 保存当前的RGBD和点云
def saveCurrentRGBD(vis):
    global view_ind, depth_image, color_image1, pcd
    if not os.path.exists('./output/'): 
        os.makedirs('./output')
    cv2.imwrite('./output/depth_'+str(view_ind)+'.png', depth_image)
    cv2.imwrite('./output/color_'+str(view_ind)+'.png', color_image1)
    o3d.io.write_point_cloud('./output/pointcloud_'+str(view_ind)+'.pcd', pcd)
    print('No.'+str(view_ind)+' shot is saved.')

    return False


# 退出当前程序
def breakLoop(vis):
    global breakLoopFlag
    breakLoopFlag += 1
    cv2.destroyAllWindows()
    vis.destroy_window()

    sys.exit()


def cha
### PIN-SLAM 处理 RGBD 数据的运行方法 PIN-SLAM 是一种基于点云的地图构建框架,能够高效处理来自 RGB-D 传感器的数据并实现同步定位建图 (SLAM)[^1]。以下是关于如何使用 PIN-SLAM 来处理 RGBD 数据的相关说明。 #### 工作原理 PIN-SLAM 利用了 RGB-D 图像中的深度信息和颜色信息来创建稠密地图,并通过优化相机姿态估计实现实时 SLAM 功能。其核心流程包括以下几个方面: - **输入数据预处理**: 需要先对 RGB 和 D(Depth)图像进行校正和配准操作,确保两者像素级对应关系准确无误[^2]。 - **特征提取匹配**: 提取彩色图像的关键点作为视觉特征,并利用这些特征完成帧间运动估计以及回环检测任务。 - **几何约束建立**: 基于深度图计算三维空间内的点坐标位置形成初始稀疏重建模型;随后借助 ICP(Iterative Closest Point)或其他相似算法进一步细化调整得到最终精确位姿变换矩阵。 #### 软件环境搭建指南 为了顺利运行 PIN-SLAM 并测试其对于 RGBD 数据的支持情况,请按照如下指导准备开发平台: 1. 安装依赖库:OpenCV, Eigen, PCL(Point Cloud Library), Ceres Solver 等必要的第三方工具包版本需满足官方文档最低需求标准; 2. 下载源码仓库至本地机器上并通过 cmake 编译生成可执行文件项目结构通常会包含 example 文件夹用来演示不同类型的输入流接口配置方式如 Kinect v2 或 Realsense R200 设备采集来的视频序列样本等; 3. 设置参数选项:修改 yaml 格式的设置文件指定具体使用的摄像头内参外参数值还有其他一些性能调优相关的超参数比如最大迭代次数阈值等等。 #### 示例代码片段展示 下面给出一段简单的 Python 脚本用于加载 OpenNI 接口获取实时 rgb-d 流并向 pin-slam 输入供后续分析处理之用: ```python import cv2 from openni import openni2 openni2.initialize() # 初始化 SDK dev = openni2.Device.open_any() depth_stream = dev.create_depth_stream() while True: frame = depth_stream.read_frame() data = frame.get_buffer_as_uint16() img = np.frombuffer(data, dtype=np.uint16).reshape((frame.height, frame.width)) colorized_img = cv2.applyColorMap(cv2.convertScaleAbs(img,alpha=0.03),cv2.COLORMAP_JET) cv2.imshow('Depth Image',colorized_img) key=cv2.waitKey(1)&0xFF if(key==ord('q')): break cv2.destroyAllWindows() openni2.unload() ```
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值