RealSense深度相机入门:用librealsense让深度流跑起来
【免费下载链接】librealsenseRealSense SDK项目地址: https://gitcode.com/GitHub_Trending/li/librealsense
插上USB后程序却一直等不到帧,深度数据也不知道从哪个对象里取,连环境哪里出了问题都无从下手。这套librealsense SDK就是为这种局面准备的。
项目能帮你做什么
以前你要手动操作UVC驱动、解析相机寄存器,自己处理内参标定,才能把摄像头变成可用的深度源。现在只需创建一个pipeline对象、调一句start(),SDK就把深度、彩色、IMU等所有数据流按帧打包递给你。它同时提供C++/C/Python等语言接口和完整的调试工具,从取帧到生成点云整条链路都有现成代码可抄。
跑通第一个例子
最省事的路径是Python绑定,先安装官方包pyrealsense2(pip install pyrealsense2),然后:
import pyrealsense2 as rs pipeline = rs.pipeline() pipeline.start() frames = pipeline.wait_for_frames() depth = frames.get_depth_frame()为什么这么配:start()不带任何参数,SDK会自动选一组经过验证的默认配置(深度+彩色各一路、30fps),免去手动指定分辨率和帧率翻车的风险。wait_for_frames()会阻塞到新一组帧到达,返回的frameset里深度、彩色、IMU按时间戳打包在一起,get_depth_frame()拿出的就是这一帧的每像素距离。C++版的最小示例在examples/hello-realsense/,逻辑和上面一一对应。
背后发生了什么
本质上就是三角测量。深度相机像投影仪一样往场景打红外光纹,左右两个红外镜头从不同角度各看一次,SDK对比这两组"视图"算出每个像素的距离,得到一张距离图。pipeline则像一条传送带:相机持续往带子上送帧,你在末端把最新的一组取走即可,取帧、对齐、滤波都是在这条带子末端做的事。
踩坑记录
问:插上相机却找不到设备,pipeline直接抛异常?
先跑lsusb | grep 8086确认USB层是否可见(8086是Intel的厂商ID)。能看到设备说明是驱动问题,用dmesg -T翻uvcvideo相关报错;查不到设备则是USB口或线缆问题。这些排查命令的出处是doc/troubleshooting.md。
问:程序行为诡异但没有任何报错,日志怎么看?
把日志级别调成debug即可,SDK会自动写出realsense2.log:
export LRS_LOG_LEVEL=debug # Windows下用 set LRS_LOG_LEVEL=debug调试完记得改回info,否则日志文件会写得很快。
问:深度图和彩色图对不上,点云贴图是歪的?
两路图像各自有独立的坐标系,必须显式对齐。用rs2::align把深度投影到彩色坐标系:
rs2::align align_to_color(rs2::stream_color); auto aligned = align_to_color.process(frames);完整写法见examples/align/,注意align对象要在流配置变更后重新构造。
问:深度图全是洞,填充率明显偏低?
先别急着调算法,用仓库自带的Depth Quality工具(tools/depth-quality)测一下真实fill rate,确认是硬件极限还是参数问题。静态场景先挂一个rs2::temporal_filter做时序平滑,再查Viewer高级模式里的激光功率和曝光参数,参考doc/rs400/rs400_advanced_mode.md。
接下来可以探索
- 深度转点云:
rs2::pointcloud的calculate()一步完成像素到三维坐标的反投影,示例在examples/pointcloud/ - 录制与回放:
rs2::recorder把现场数据存成.db3文件,rs2::playback加载回放,之后不插相机也能开发和调试,详见doc/record-and-playback.md - 高级参数调优:激光功率、自动曝光、HDR等寄存器级选项集中在doc/rs400/rs400_advanced_mode.md
能稳定取到深度帧之后,剩下的点云、对齐、滤波这些活,照着examples目录里对应的样例逐个抄一遍就能落地。
【免费下载链接】librealsenseRealSense SDK项目地址: https://gitcode.com/GitHub_Trending/li/librealsense
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考