深度相机的图像深度实时显示
最近有了一个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
或者等待我的下一个博客。
深度相机的图像深度实时显示相关推荐
- 通过pyqt5绘制标准正态分布图像并实时显示_20200427_
通过pyqt5绘制标准正态分布图像并实时显示 1.首先通过QTdesigner绘制显示界面窗口,生成window_show_picture.ui(如附件资源所示),再转化为文件. window_sho ...
- 收集了100+论文的最新综述来了!基于深度学习的图像深度重建
点击上方"3D视觉工坊",选择"星标" 干货第一时间送达 今天给大家分享的论文是2020年最新的综述:A Survey on Deep Learning Arc ...
- 基于大华SDK的二次开发,用于网络摄像头图像的实时显示和捕获(附源码)
目录 1. 文章背景 2. 主要模块 2.1 初始化SDK 2.2 登录账号 2.3 捕获图片 2.4 实时显示 2.5 断开时释放 2.6 回调函数 3. 源代码 3.1 头文件 3.2 源文件 1 ...
- 基于双目相机的图像深度信息提取算法matlab仿真
目录 一.理论基础 二.核心程序 三.测试结果 一.理论基础 自然界本来就是一个三维空间,自然界所有景物都是立体的.人眼观看自然界景物时,不仅能看到景物的高度与宽度,而且还能分辨出景物的深度,即人眼具 ...
- 深度相机中提取深度信息
OpenCV-apps opencv函数的应用 cv_bridge 连接ros和cv
- 学习ios Metal(9)—iphone X真实感深度相机True Depth Camera的调用和metal GPGPU
metal的基础知识入门,首推Metal By Example系列:http://metalbyexample.com/.博主的相关文章,主要给出工程实际遇到的典型问题及其解决方案. 本节源码:htt ...
- oak深度相机入门教程-识别车辆车牌
系列文章目录: oak深度相机入门教程-识别眼睛的凝视方向 oak深度相机入门教程-检测是否佩戴口罩 oak深度相机入门教程-文本检测+光学字符识别(OCR)管道 oak深度相机入门教程-识别人的 ...
- 深度软件商店_3D深度相机,这就是微软未来手机Surface Duo新特性
微软Surface Duo是今年晚些时候最令人兴奋的新型智能手机之一. Surface Duo标志着微软进入可折叠智能手机市场,Surface Duo可运行Google的Android应用,并直接从谷 ...
- 3D深度相机---结构光
去年的仪器仪表的课有汇报,我还专门为3D深度像机做了个调研,一直用inter realsense的,最近老师让看结构光方案的,正好总结一下. 1. 结构光(Structured-light) 由于基于 ...
最新文章
- d3d导致cairo不正常
- 双线服务器,ip表设置
- Android 联系人导入导出(VCard格式)
- debug idea js_IntelliJ IDEA 配置chrome插件调试js代码 - 狂奔的熊二 - 博客园
- popen 如何获取指令执行情况_Linux下使用popen()执行shell命令
- 【华为云技术分享】干货分享丨jvm系列:dump文件深度分析
- 意见反馈接口php,用PHP制作的意见反馈表源码
- carmaker/matlab联合仿真(一) 新建工程,运行自带example
- Eclipse查看对应windowsbuilder+GEF+EMF版本
- 微信扫描下载apk解决方案
- 数字信号处理3个作业-----作业3自相关与Burg求解AR模型系数以估计其功率谱
- IDEA 关闭当前的编辑窗口
- Render函数的用法
- Mysql多表查询效率的研究(一)
- Css玻璃拟物化风格生成器
- CAN Interaction Layer (谈谈我对交互层的理解)
- 自动驾驶 11-3: 根据 LIDAR 数据进行位姿估计 Pose Estimation from LIDAR Data
- 十大战略工具(1)——波士顿矩阵
- HMS Core Discovery直播预告 | AI画质增强 ,开启超清视界
- 代码注释生成:《Towards Automatically Generating Summary Comments for Java Methods》论文笔记
热门文章
- java日期和时间戳格式互转
- git报错:remote unpack failed: unable to create temporary object directory
- html文件上传 用到美化,文件上传html样式美化
- windows 7 .iso镜像文件 安装方法
- org.activiti.engine.ActivitiException: Couldn‘t serialize value ‘MyVariables
- eXact测量L*a*b*和色差
- 【JavaEE】Spring AOP (面向切面)详解
- 二十三岁的单身妈妈,何去何从?
- 高德地图广告投放产品介绍!高德地图广告开户找哪里?
- 原生JS查找相邻元素——siblings方法