系统:Ubuntu16.04

python版本:python2.7

内核版本:4.13.0

realsense SDK:librealsense1.12.1

python wrapper:pyrealsense2.2

这里的pyrealsense2.2指的是pyrealsense1的2.2版本,并不是pyrealsense2,如图:

安装pyrealsense/2.2

1. 进入github的pyrealsense地址,把pyrealsense的包下下来,解压到本地。sudo apt-get install pycparser

sudo apt-get install Cython

sudo apt-get install Numpy

3. 通过setup.py安装pyrealsensepython setup.py install

---获取深度图---import pyrealsense as rs

import cv2

import bumpy as np

serv = rs.Service()

dev = serv.Device()

depth = dev.depth

depth = depth * dev.depth_scale * 1000

depth = depth.astype(np.uint8)

rgb = dev.color

gray = cv2.cvtColor(rob,cv2.COLOR_BGR2GRAY)

gray_depth = np.concatenate((gray,depth),axis=1)

cv2.imshow('gray_depth',gray_depth)

mix = cv2.addWeighted(gray,0.5,depth,0.5,0)

cv2.imshow('mix',mix)

以上代码的作用是,获取灰度图+深度图,然后融合两张图获取混合后的mix图,效果如下:

---问题分析---

根据以上代码的运行结果,我们可以很直观的看到,获取的RGB图和深度图的坐标位置是不一样的。这是因为深度摄像头上不同摄像头存在空间位置的偏差导致的。首先什么是深度图?

深度图,它是灰度图像,该图像的每一个像素值都是摄像头到物体表面之间距离的估计值。

那么,这样两张不对齐的RGB图和深度图,就做不到每个像素点之间的一一对应关系,也就没办法直接拿来用了,所以需要我们做像素对齐,把每个像素点一一对应起来,这样的数据才是有效的。

---像素对齐---

关于像素对齐,官方其实给出了相关函数,只是pyrealsense1的examples中没有写出来,而pyrealsense2中的函数我们又没法用。所以当不确定到底有没有相关函数时,我们可以自己进行查找。

通过dir(***),可以列出***底下所有的函数,如图:

我们可以看到,dev底下有两个函数cad和daccad:color align to depth #RGB图对齐到深度图,得到对齐后的RGB图

dac:depth align to color #深度图对齐到RGB图,得到对齐后的深度图

经测试后,cad图会有鱼眼的效果,导致图像存在黑边,而且还有一定比例的缩放,不利于操作。

所以我这里选择了dac,让深度图主动对齐RGB图,而RGB的图像则由普通摄像头获取,代码如下:import pyrealsense as rs

import cv2

import numpy as np

serv = rs.Service()

dev = serv.Device()

dac = dev.dac

dac = dac * dev.depth_scale * 1000

depth = dac.astype(np.uint8)

rgb = dev.color

gray = cv2.cvtColor(rob,cv2.COLOR_BGR2GRAY)

gray_depth = np.concatenate((gray,depth),axis=1)

cv2.imshow('gray_depth',gray_depth)

mix = cv2.addWeighted(gray,0.5,depth,0.5,0)

cv2.imshow('mix',mix)

结果如下,通过mix图,可以很清晰地看到像素对齐以后的效果:

pythonrgbd图片像素对齐_利用pyrealsense获取深度图,并进行像素对齐相关推荐

  1. python过去日期_利用python获取当前日期前后N天或N月日期的方法示例

    前言 最近因为工作原因,发现一个Python的时间组件,很好用分享出来!(忘记作者名字了,在这里先感谢了),下面话不多说,来一起看看详细的介绍吧. 示例代码: # -*- coding: utf-8 ...

  2. python获取window共享目录列表_利用Python获取DICOM RTstructure勾画列表

    在<利用Python打开DICOM CT文件>一文中,我们利用pydicom.dcmread()读取了CT图像.本文中我们将修改load_scan()函数来读取RTstructure文件并 ...

  3. python自动保存ping结果_利用python获取Ping结果示例代码

    前言 本文主要跟大家分享了关于利用python获取Ping结果的相关内容,分享出来供大家参考学习,下面话不多说,来一起看看详细的介绍吧. 示例代码: # -*- coding: utf-8 -*- i ...

  4. python读取sas数据集_利用Python获取SAS和R自带数据集

    图:北京-奥森公园-2018年4月 无论是SAS.R还是Python,本身都自带一些数据集,对于初学者来说,可以通过这些自带的小数据集进行编程练习,无疑是非常方便的.SAS.R作为统计分析软件,本身自 ...

  5. js获取classname值_利用js获取元素class值的两种方法

    我们有时为了达到某种效果,需要以元素的class值为条件做判断. 我们如何利用JavaScript获取元素class的值?我们先看下面代码: x=document.getElementsByTagNa ...

  6. igs无法分配驱动器映射表_利用VBA获取驱动器的信息

    大家好,我们今日讲解"VBA信息获取与处理"教程中第十七个专题"文件及文件夹信息的获取及操作"的第三节"利用VBA获取文件的信息和属性",这 ...

  7. vba monthview控件64位_利用VBA获取文件的信息和属性

    大家好,我们今日讲解"VBA信息获取与处理"教程中第十七个专题"文件及文件夹信息的获取及操作"的第三节"利用VBA获取文件的信息和属性",这 ...

  8. word里公式后面标号怎么对齐_如何使Word中公式与文字对齐

    我们在写论文过程中,在Word文档里输入MathType写的公式,发现公式与文字不能很好得对齐问题,上下有偏差,很丑,让人很不爽:还有很多人发现使用MathType编辑的公式直接粘贴到Word里面,与 ...

  9. opencv获取图片像素坐标_利用OpenCV从图片中提取矩形并标注坐标(室内平面地图)(一)

    ​某城市会展中心室内地图 背景 一名室内设计师的日常工作从设计一张会展地图开始.常常有这样的场景:划分除规范的展位后,进入销售阶段,频繁的需要修改这张地图,如展示拆分.合并.换位置.标记已交易. 问题 ...

最新文章

  1. pgsql数据库默认配置事务类型_PostgreSQL基础教程之:初始化配置
  2. CSS学习六:布局剖析
  3. Linux/Ubuntu
  4. 三只松鼠:阿里云数据中台基座上的多渠道、多业态生长
  5. [原创] GSM/GPRS 以及CDMA区分以及相关模块选型
  6. php ajax取不到值,PHP没有从Ajax获取值
  7. oldboy_09_03day
  8. 万物智联时代的终端智能「管家」 重磅升级:混合云IoT一体机
  9. python之父子进程间通信
  10. 惠斯通电桥信号调理芯片_变频器通电后无反应,如何检查维修?
  11. 树莓派安装python3.5_树莓派升级python的具体步骤
  12. TurboMosaic 如何制作照片马赛克效果
  13. Plugin “GsonFormat“ is incompatible
  14. FlashFXP 5.0.0官方中文破解版,附文件下载地址和破解码
  15. 大巧不工Web前端设计修炼之道——(8)浅谈Web发展的未来
  16. 游戏中常用的设计模式
  17. 打造可信区块链生态推动行业发展|筱静观察2019第9期
  18. 腾讯滑块vData_VMP分析
  19. m3u8 视频的解密,合并处理 通过java代码
  20. java集成showdoc文档生成

热门文章

  1. R语言使用coin包应用于独立性问题的置换检验(permutation tests、响应变量是否独立于组、两个数值变量是独立的吗、两个分类变量是独立的吗)、以及coin包的常用置换检验函数
  2. R语言ggplot2可视化自动换行适配长文本图例(legend)实战:Multiple Lines for Text per Legend Label
  3. R语言ggplot2可视化:使用pracma包的interp1函数对缺失值进行线性插值后进行可视化分析、用虚线标记进行数据填充的区域
  4. R语言使用ggplot2包geom_jitter()函数绘制分组(strip plot,一维散点图)带状图(添加均值、中位数)实战
  5. R语言ggplot2可视化在lines线图的尾端添加线图标签、并且去除图例实战
  6. R语言按组聚合求和实战(sum a variable by group):使用aggregate函数按组聚合求和、使用tapply函数按组聚合求和、按组聚合求和(使用dplyr包)
  7. R语言卡方分布函数Binomial Distribution(dchisq, pchisq, qchisq rchisq)实战
  8. R函数之:apply(), lapply(), sapply(), tapply()
  9. windows10 Selenium Chrome 驱动安装
  10. three.js 背景图片