最近有了一个intel 的 D435i 深度相机,网上找了一个实时显示图片和深度图的python 程序,最开始是一个博客,后来发现在intel 的github里也有。都找不到链接了,觉得不错,修改整理成本文。

首先要安装好pyrealsense2 ,链接是: realsense.intel.com/get-started

官网提供的软件工具与文档资料介绍
https://realsense.intel.com/intel-realsense-downloads/#firmware
1、Intel RealSense Viewer.exe 是最主要的软件,功能是查看查看视频流,并可以对视频流进行后期处理,这个官方GitHub有提供完整的c++工程,编译了可以直接运行;
2、Depth Quality Tool for Intel RealSense Cameras.exe 用于测试z方向的深度数据是否准,只需要把rgbd相机正对着白色的墙面等就可以了,然后对比卷尺量的距离与软件上显示的距离,来判断是否需要校准相机;
3、Intel RealSense D400 Series Dynamic Calibration Software Tools这个是校准工具,如果前面计算的距离不准,可以利用这个软件进行校准,在苹果或安卓手机搜realsense这个软件,安装打开,就是显示一张类似棋盘格标定板的图片,然后配合校准工具,按照上面的提示晃动手机即可校准,输出外参R\T。

下面是实时显示图像和深度的python 代码:

请注意,深度是转换成图片显示的。

import pyrealsense2 as rs
import numpy as np
import cv2# Configure depth and color streams
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)
# Start streaming
pipeline.start(config)
try:while True:# Wait for a coherent pair of frames: depth and colorframes = pipeline.wait_for_frames()depth_frame = frames.get_depth_frame()color_frame = frames.get_color_frame()if not depth_frame or not color_frame:continue# Convert images to numpy arraysdepth_image = np.asanyarray(depth_frame.get_data())color_image = np.asanyarray(color_frame.get_data())# Apply colormap on depth image (image must be converted to 8-bit per pixel first)depth_colormap = cv2.applyColorMap(cv2.convertScaleAbs(depth_image, alpha=0.03), cv2.COLORMAP_JET)# Stack both images horizontallyimages = np.hstack((color_image, depth_colormap))# Show imagescv2.namedWindow('RealSense', cv2.WINDOW_AUTOSIZE)cv2.imshow('RealSense', images)key = cv2.waitKey(1)# Press esc or 'q' to close the image windowif key & 0xFF == ord('q') or key == 27:cv2.destroyAllWindows()breakelif key & 0xFF == ord('s'):cv2.imwrite('savefile.jpg',images)
finally:# Stop streamingpipeline.stop()

运行的效果如下(左边,图片,右边,深度图片):

如何把这2张图片转换为3D呢?

首先把这2张图片,分别存在各自的一个文件里,然后参考我的另一博文: 使用opencv以及pcl将2D图像转换为3D点云

如何检测图中物体的深度或者坐标呢?

先要了解相机的基本参数如下(我上文c++代码):

// 相机内参,这个参数不是D435i 的,仅仅做个参考
const double camera_factor = 1000;
const double camera_cx = 325.5;
const double camera_cy = 253.5;
const double camera_fx = 518.0;
const double camera_fy = 519.0;

然后呢,就可以计算了(我上文c++代码):

// 获取深度图中(m,n)处的值
ushort d = depth.ptr<ushort>(m)[n];
// d 可能没有值,若如此,跳过此点
if (d == 0)continue; //说明这点没有深度值

// 计算这个点的空间坐标
p.z = double(d) / camera_factor;
p.x = (n - camera_cx) * p.z / camera_fx;
p.y = (m - camera_cy) * p.z / camera_fy;

也可以参考 https://github.com/IntelRealSense/librealsense/blob/jupyter/notebooks/distance_to_object.ipynb

或者等待我的下一个博客。

深度相机的图像深度实时显示相关推荐

  1. 通过pyqt5绘制标准正态分布图像并实时显示_20200427_

    通过pyqt5绘制标准正态分布图像并实时显示 1.首先通过QTdesigner绘制显示界面窗口,生成window_show_picture.ui(如附件资源所示),再转化为文件. window_sho ...

  2. 收集了100+论文的最新综述来了!基于深度学习的图像深度重建

    点击上方"3D视觉工坊",选择"星标" 干货第一时间送达 今天给大家分享的论文是2020年最新的综述:A Survey on Deep Learning Arc ...

  3. 基于大华SDK的二次开发,用于网络摄像头图像的实时显示和捕获(附源码)

    目录 1. 文章背景 2. 主要模块 2.1 初始化SDK 2.2 登录账号 2.3 捕获图片 2.4 实时显示 2.5 断开时释放 2.6 回调函数 3. 源代码 3.1 头文件 3.2 源文件 1 ...

  4. 基于双目相机的图像深度信息提取算法matlab仿真

    目录 一.理论基础 二.核心程序 三.测试结果 一.理论基础 自然界本来就是一个三维空间,自然界所有景物都是立体的.人眼观看自然界景物时,不仅能看到景物的高度与宽度,而且还能分辨出景物的深度,即人眼具 ...

  5. 深度相机中提取深度信息

    OpenCV-apps opencv函数的应用 cv_bridge 连接ros和cv

  6. 学习ios Metal(9)—iphone X真实感深度相机True Depth Camera的调用和metal GPGPU

    metal的基础知识入门,首推Metal By Example系列:http://metalbyexample.com/.博主的相关文章,主要给出工程实际遇到的典型问题及其解决方案. 本节源码:htt ...

  7. oak深度相机入门教程-识别车辆车牌

      系列文章目录: oak深度相机入门教程-识别眼睛的凝视方向 oak深度相机入门教程-检测是否佩戴口罩 oak深度相机入门教程-文本检测+光学字符识别(OCR)管道 oak深度相机入门教程-识别人的 ...

  8. 深度软件商店_3D深度相机,这就是微软未来手机Surface Duo新特性

    微软Surface Duo是今年晚些时候最令人兴奋的新型智能手机之一. Surface Duo标志着微软进入可折叠智能手机市场,Surface Duo可运行Google的Android应用,并直接从谷 ...

  9. 3D深度相机---结构光

    去年的仪器仪表的课有汇报,我还专门为3D深度像机做了个调研,一直用inter realsense的,最近老师让看结构光方案的,正好总结一下. 1. 结构光(Structured-light) 由于基于 ...

最新文章

  1. d3d导致cairo不正常
  2. 双线服务器,ip表设置
  3. Android 联系人导入导出(VCard格式)
  4. debug idea js_IntelliJ IDEA 配置chrome插件调试js代码 - 狂奔的熊二 - 博客园
  5. popen 如何获取指令执行情况_Linux下使用popen()执行shell命令
  6. 【华为云技术分享】干货分享丨jvm系列:dump文件深度分析
  7. 意见反馈接口php,用PHP制作的意见反馈表源码
  8. carmaker/matlab联合仿真(一) 新建工程,运行自带example
  9. Eclipse查看对应windowsbuilder+GEF+EMF版本
  10. 微信扫描下载apk解决方案
  11. 数字信号处理3个作业-----作业3自相关与Burg求解AR模型系数以估计其功率谱
  12. IDEA 关闭当前的编辑窗口
  13. Render函数的用法
  14. Mysql多表查询效率的研究(一)
  15. Css玻璃拟物化风格生成器
  16. CAN Interaction Layer (谈谈我对交互层的理解)
  17. 自动驾驶 11-3: 根据 LIDAR 数据进行位姿估计 Pose Estimation from LIDAR Data
  18. 十大战略工具(1)——波士顿矩阵
  19. HMS Core Discovery直播预告 | AI画质增强 ,开启超清视界
  20. 代码注释生成:《Towards Automatically Generating Summary Comments for Java Methods》论文笔记

热门文章

  1. java日期和时间戳格式互转
  2. git报错:remote unpack failed: unable to create temporary object directory
  3. html文件上传 用到美化,文件上传html样式美化
  4. windows 7 .iso镜像文件 安装方法
  5. org.activiti.engine.ActivitiException: Couldn‘t serialize value ‘MyVariables
  6. eXact测量L*a*b*和色差
  7. 【JavaEE】Spring AOP (面向切面)详解
  8. 二十三岁的单身妈妈,何去何从?
  9. 高德地图广告投放产品介绍!高德地图广告开户找哪里?
  10. 原生JS查找相邻元素——siblings方法