资讯动态

四步从0到跑通:RealSense Android 深度测距实战,一张照片读出距离

发布时间:2026/9/19 7:53:44 来源:尧图企业网站定制
四步从0到跑通RealSense Android 深度测距实战一张照片读出距离【免费下载链接】librealsenseRealSense SDK项目地址: https://gitcode.com/GitHub_Trending/li/librealsense手机上的相机能拍照却答不出面前那张桌子有多远。缺少深度数据正是 RealSense Android 深度相机应用落不了地手机的症结。读完这篇你会完成三件事完成 librealsense 依赖配置与相机权限设置gradle sync 一次通过插上 D400 系列相机后自动识别设备开启 Android 深度流采集从深度帧读出中心距离并把彩色照片存进手机存储一、硬件与软件准备清单 动手前先对照清单自查。硬件侧Android 设备系统版本 6.0 及以上芯片组支持 OTGOTG 就是让手机当主机、外接 USB 设备的功能USB3 OTG 数据线一端接相机、另一端 OTG 接口插手机必须支持数据传输Intel RealSense D400 系列深度相机D435i、D455 等型号均可软件侧安装最新版 Android Studio把 SDK 源码拉到本地git clone https://gitcode.com/GitHub_Trending/li/librealsense Android 封装层与示例都在仓库的wrappers/android目录下平台支持细节可查官方 Android 文档。相机是主角OTG 线是数据通道两者齐活才谈得上测距。二、依赖与权限一次配到位打开 app 模块的build.gradle补上两处内容。RealSense 的 AAR 托管在 maven 仓库它负责相机权限申请并提供基于 JNI 的 Java APIrepositories { maven { url https://egiintel.jfrog.io/artifactory/librealsense } } dependencies { implementation com.intel.realsense:librealsense:2.18.0aar }AndroidManifest.xml里再加一行相机权限Android 9 及以上强制要求uses-permission android:nameandroid.permission.CAMERA/为什么要配这些AAR 不进来librealsense 的 Java 类根本找不到权限不声明系统不会把相机硬件交给你的应用。配完后 sync 一次 gradle能导入com.intel.realsense.librealsense包就算过关。三、从设备插上去到画面出来画面要分三步走出来。先初始化上下文。在应用入口调用一次RsContext.init(getApplicationContext())多 Activity 项目务必用 Application context这样各页面才能共享同一个上下文。再注册设备监听。RealSense Android 深度相机的插拔动作都会通过回调通知你由你决定流去还是留mRsContext.setDevicesChangedCallback(new DeviceListener() { Override public void onDeviceAttach() { mStreamingThread.start(); } Override public void onDeviceDetach() { mStreamingThread.interrupt(); } });最后启动数据流。在专用线程里创建 Pipeline可以理解为相机的总调度负责编排深度、彩色等所有传感器流调用pipe.start()后帧就开始流动。官方Java 示例用单个 Activity 走完了全部流程可以直接当骨架照着改设备一插深度画面几秒内点亮。四、读出距离拍下照片原理先说清。深度帧本质上是每个像素一个距离值对中心像素调用getDistance拿到的就是相机到画面中央目标的米制距离这是实现深度测距最直接的姿势。核心循环不长Pipeline pipe new Pipeline(); pipe.start(); while (!mStreamingThread.isInterrupted()) { try (FrameSet frames pipe.waitForFrames()) { try (Frame f frames.first(StreamType.DEPTH)) { DepthFrame depth f.as(Extension.DEPTH_FRAME); float distance depth.getDistance( depth.getWidth() / 2, depth.getHeight() / 2); // 更新界面距离显示或触发拍照动作 } } } pipe.stop();两层 try 是 try-with-resources帧读完立刻 close否则 GC 追不上新帧分配卡帧就在眼前。RealSense 拍照保存只有三步一从 FrameSet 里取StreamType.COLOR彩色帧二把帧的原始数据转成 Bitmap三以 JPG 格式写入手机存储。Android 拍照示例已把彩色、深度双画面与保存逻辑全部串好打开就能对照。距离是数字照片是凭证一帧数据两种产出。五、踩过的坑与下一步三个高频问题按问题→原因→解法列给你OTG 识别失败→ 手机 OTG 开关没开或数据线只支持充电 → 在系统设置里打开 OTG换一根支持数据传输的 USB3 数据线帧率波动、频繁掉帧→ 帧对象没及时释放缓冲被占满 → 统一走 try-with-resources读到的 Frame 用完即关权限被拒、画面黑屏→ Android 9 以上需要运行时 CAMERA 权限 → 启动数据流前用checkSelfPermission检查未授予就动态申请若测出的距离跳变明显可以翻一翻官方后处理滤波示例看看给深度流加抽取、时序滤波的效果。想从单点距离走向整片场景再去看测量示例与 examples 目录下的 pointcloud 示例把深度数据变成点云。建议你先让相机对准 2 米外的墙面确认读数落在 1.9 到 2.1 米之间再谈参数调优。【免费下载链接】librealsenseRealSense SDK项目地址: https://gitcode.com/GitHub_Trending/li/librealsense创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价