【深度相机D435i】Windows+Ubuntu下调用D435i利用Python读取、保存RGB、Depth图片

这篇具有很好参考价值的文章主要介绍了【深度相机D435i】Windows+Ubuntu下调用D435i利用Python读取、保存RGB、Depth图片。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。


前言

最近组里面的项目需要用到D435i深度相机采集深度图片,所以记录一下在Windows+Ubuntu的环境下使用D435i深度相机的流程,以及如何利用python读取、保存常见的RGB、Depth图片。


一、D435i深度相机介绍

D435i 在小巧外形中采用英特尔模块和视觉处理器,是一个功能强大的一体产品,可与可定制软件配合使用,是一款能够了解自身运动的深度摄像头。 运动中的摄像头的理想选择 D435i 结合了宽视场和全局快门传感器,是机器人导航和物体识别等应用领域的首选解决方案。 更宽的视场使单个摄像头能够覆盖更广的区域,从而减少“盲点”。 全局快门传感器提供极低的光敏感度,使机器人能够在关灯的情况下在空间中导航。 简单集成的完整套件 深度摄像头 D435i 属于英特尔® 实感™ D400 系列摄像头,该产品系列采用了英特尔最新的深度感知硬件和软件,并将其封装到易于集成的产品中。

【深度相机D435i】Windows+Ubuntu下调用D435i利用Python读取、保存RGB、Depth图片

二、Windows下安装D435i

1.安装Intel® RealSense™ SDK 2.0

进入到官方的GitHub链接librealsense,翻到Download and Install部分,可以看到我们要下载的SDK,SDK包含以下几个部分:分别是Intel® RealSense™ ViewerDepth Quality ToolDebug ToolsCode SamplesWrappers,分别指的是:相机的可视化界面、深度质量检测、调试工具、示例程序、还有各种封装(Wrappers)。
如果是需要对深度图开发那么建议下载完整的SDK,如果仅仅是要做可视化部分的话只下载Intel® RealSense™ Viewer即可。

【深度相机D435i】Windows+Ubuntu下调用D435i利用Python读取、保存RGB、Depth图片

进入到下载界面之后这里会介绍Intel® RealSense™ SDK 2.0支持的平台要求,以下图为例,Intel® RealSense™ SDK 2.0v2.51.1版本对window和Ubuntu的版本要求如下:

Ubuntu 18.04/20.04 LTS (1) . Kernel versions: 4.[4, 8,10,13,15], 4.16(2) , 4.18, 5.[0, 3, 4, 8].
Windows 10 (Build 15063 or later, 17763+ recommended)

因此在安装Intel® RealSense™ SDK 2.0的时候要注意我们的平台的版本信息,否则会出大问题。
【深度相机D435i】Windows+Ubuntu下调用D435i利用Python读取、保存RGB、Depth图片

之后是对不同的package的安装,这个根据自己的需求选择即可:
【深度相机D435i】Windows+Ubuntu下调用D435i利用Python读取、保存RGB、Depth图片
下载完成后需要进行安装,安装过程中直接一直点next即可,似乎无法更改路径!!!
默认安装即可。

2.使用Intel® RealSense™ Viewer查看D435i可视化界面

将D435i与电脑相连,注意这里需要USB3.0才能成功连接,但是!!!如果你的数据线不是原装的有可能需要的是USB2.0
打开Intel® RealSense™ Viewer,再打开它的左上角的按钮,分别是:深度、RGB相机,
【深度相机D435i】Windows+Ubuntu下调用D435i利用Python读取、保存RGB、Depth图片
完成上述的操作之后即可看到已经彩色化的深度图和RGB图像了。
【深度相机D435i】Windows+Ubuntu下调用D435i利用Python读取、保存RGB、Depth图片

3.使用D435i读取保存各类图片实战

上述虽然已经成功的使用了Intel® RealSense™ Viewer查看到我们的图像,但是在一些开发的过程中还需要对各类的图像保存,这里我们提供python版本的代码实现图像的读取和保存。注意下方的代码和Intel® RealSense™ Viewer不能同时使用。
代码中关键参数的解析;
图像保存路径,根据需要修改

folder = "C:/Users/86150/Desktop/D435i/ouput/"

将深度图转为伪彩色图,通过alpha调节图片颜色

# 将深度图转化为伪彩色图方便观看
depth_colormap = cv2.applyColorMap\
    (cv2.convertScaleAbs(depth_frame, alpha=0.008)
     , cv2.COLORMAP_JET)
cv2.imshow('1 depth_color', depth_colormap)

按下键盘上的按键“t”,保存我们需要的图片,这里我们保存的是彩色RGB、伪彩色深度图、深度图三种
代码shot('color_shot', color_frame, 'color/')表示将彩色图片保存到 "C:/Users/86150/Desktop/D435i/ouput/"下的color文件夹下面。

if c == ord('t'):
    # 默认保存五张图片,如果不需要保存某图像把对应那行代码注释掉即可
    # shot('left_shot', left_frame)
    # shot('right_shot', right_frame)
    shot('color_shot', color_frame, 'color/')
    shot('depth_colormap', depth_colormap, 'depth_color/')
    shot('depth_frame', depth_frame, 'depth/')
    counter += 1

保存的图片如下图所示:
【深度相机D435i】Windows+Ubuntu下调用D435i利用Python读取、保存RGB、Depth图片

运行结果如下,可以达到和Intel® RealSense™ Viewer相同的效果:
【深度相机D435i】Windows+Ubuntu下调用D435i利用Python读取、保存RGB、Depth图片

完整代码如下

import pyrealsense2 as rs
import numpy as np
import cv2
 
counter = 0
# 若要保存到其他文件夹,修改此路径
folder = "C:/Users/86150/Desktop/D435i/ouput/"
def shot(pos, frame, img):
    global counter
    path = folder + img + pos + "_" + str(counter) + ".png"
    cv2.imwrite(path, frame)
    print("snapshot saved into: " + path)
 
pipeline = rs.pipeline()
config = rs.config()
# 配置深度和颜色流
# 1015或者30可选,20或者25会报错,其他帧率未尝试
# 配置颜色相机
config.enable_stream(rs.stream.color, 848, 480, rs.format.bgr8, 15)
# 配置红外相机
config.enable_stream(rs.stream.infrared, 1, 848, 480, rs.format.y8, 15)
config.enable_stream(rs.stream.infrared, 2, 848, 480, rs.format.y8, 15)
# 配置深度图像
config.enable_stream(rs.stream.depth, 848, 480, rs.format.z16, 15)
# Start streaming
profile = pipeline.start(config)
 
# 创建对齐对象, rs.align 允许我们将深度帧与其他帧对齐, "align_to" 是计划对其深度帧的流类型
align_to = rs.stream.color
align = rs.align(align_to)
 
try:
    while True:
        frames = pipeline.wait_for_frames()
        # 将深度框与颜色框对齐
        aligned_frames = align.process(frames)
        # 获取对齐帧
        aligned_depth_frame = aligned_frames.get_depth_frame()
        if not aligned_depth_frame:
            continue
        # depth_frame
        depth_frame = 50*np.asanyarray(aligned_depth_frame.get_data())
        cv2.imshow('0 depth', depth_frame)
        # 将深度图转化为伪彩色图方便观看
        depth_colormap = cv2.applyColorMap\
            (cv2.convertScaleAbs(depth_frame, alpha=0.008)
             , cv2.COLORMAP_JET)
        cv2.imshow('1 depth_color', depth_colormap)
 
        # color frames
        color_frame = aligned_frames.get_color_frame()
        if not color_frame:
            continue
        color_frame = np.asanyarray(color_frame.get_data())
        cv2.imshow('2 color', color_frame)
 
        # left frames
        left_frame = frames.get_infrared_frame(1)
        if not left_frame:
            continue
        left_frame = np.asanyarray(left_frame.get_data())
        # cv2.imshow('3 left_frame', left_frame)
 
        # right frames
        right_frame = frames.get_infrared_frame(2)
        if not right_frame:
            continue
        right_frame = np.asanyarray(right_frame.get_data())
        # cv2.imshow('4 right_frame', right_frame)
 
        c = cv2.waitKey(1)
 
        # 如果按下ESC则关闭窗口(ESC的ascii码为27),同时跳出循环
        if c == 27:
            cv2.destroyAllWindows()
            break
        
        if c == ord('t'):
            # 默认保存五张图片,如果不需要保存某图像把对应那行代码注释掉即可
            # shot('left_shot', left_frame)
            # shot('right_shot', right_frame)
            shot('color_shot', color_frame, 'color/')
            shot('depth_colormap', depth_colormap, 'depth_color/')
            shot('depth_frame', depth_frame, 'depth/')
            counter += 1
 
finally:
    # Stop streaming
    pipeline.stop()

二、Ubuntu16.04下安装D435i

由于项目需要用到C++代码,相比于在Windows上配一套开发环境,在linux下做C++的编程更为简单,在Linux下安装SDK有两种方式,分别是直接命令行安装和源码编译安装,下面将分别介绍:

1.Linux Distribution——命令行安装

对Linux平台的要求:
【深度相机D435i】Windows+Ubuntu下调用D435i利用Python读取、保存RGB、Depth图片
注册公钥

sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-key F6E65AC044F831AC80A06380C8B3A55A6F3EFCDE || sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-key F6E65AC044F831AC80A06380C8B3A55A6F3EFCDE

添加repositories(Ubuntu 16 LTS)

sudo add-apt-repository "deb http://realsense-hw-public.s3.amazonaws.com/Debian/apt-repo xenial main" -u

安装library

sudo apt-get install librealsense2-dkms
sudo apt-get install librealsense2-utils

将上述的命令安装成功之后就可以查看D435i的可视化界面了,如果还需要做一些深度图的开发,那么需要安装debug等装置,安装命令如下:

sudo apt-get install librealsense2-dev
sudo apt-get install librealsense2-dbg

接下来测试我们的相机是否安装成功:

realsense-viewer

得到的界面如下,和Windows下一致:

【深度相机D435i】Windows+Ubuntu下调用D435i利用Python读取、保存RGB、Depth图片
此外还有一些删除命令安装包的命令:

2.源码安装

下载源码librealsense,注意下载的版本要支持Ubuntu16.04,使用下方的指令安装:

git clone -b v2.50.0 https://github.com/IntelRealSense/librealsense.git

-b v2.50.0指的是2.50.0版本。
【深度相机D435i】Windows+Ubuntu下调用D435i利用Python读取、保存RGB、Depth图片
更新系统

sudo apt-get update && sudo apt-get upgrade && sudo apt-get dist-upgrade

此时注意要断开Ubuntu与D435i的连接,安装下列的依赖:

sudo apt-get install libudev-dev pkg-config libgtk-3-dev
sudo apt-get install libusb-1.0-0-dev pkg-config
sudo apt-get install libglfw3-dev
sudo apt-get install libssl-dev

安装内核所需的模块

cd librealsense
./scripts/setup_udev_rules.sh

安装补丁包,耗时很长,耐心等待:

./scripts/patch-realsense-ubuntu-lts.sh

编译和安装:

mkdir build && cd build
cmake ../ -DCMAKE_BUILD_TYPE=Release -DBUILD_EXAMPLES=true
sudo make uninstall && make clean && make -j8 && sudo make install

安装成功后,输入以下指令即可验证是否安装成功:

realsense-viewer

【深度相机D435i】Windows+Ubuntu下调用D435i利用Python读取、保存RGB、Depth图片

大功告成!!!文章来源地址https://www.toymoban.com/news/detail-430970.html

到了这里,关于【深度相机D435i】Windows+Ubuntu下调用D435i利用Python读取、保存RGB、Depth图片的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Ubuntu 18.04安装D435i 相机驱动及Ros1 Wrapper

    1.安装前注意 librealsense SDK相当于相机的驱动,SR300和ZR300的支持驱动是librealsense SDK 1.0,而D435i是librealsense SDK 2.0 **安装前一定要注意librealsense,realsense-ros(即Ros Wrapper),D435i相机固件版本三者之间的版本对应关系。**ros1环境只支持librealsense2.50.0之前的版本,ros2环境要下载librealse

    2024年02月22日
    浏览(36)
  • Intel RealSense D435i深度相机通过点云获取图片中任意点三维信息(python实现)

    此时效果(左侧RGB图,右侧深度图)(过近时深度信息几乎显示不出来)  按下p键暂停画面 按下s键保存图片 按下r键读取刚才保存的图片,并通过image_sliced文件将图片裁剪到自己需要的范围 image_sliced.py 按下g键进行图像处理,判断方向,并将三维信息显示在图片上 image_pro

    2023年04月08日
    浏览(36)
  • d435i 相机和imu标定

    使用 imu_utils 功能包标定 IMU,由于imu_utils功能包的编译依赖于code_utils,需要先编译code_utils,主要参考 相机与IMU联合标定_熊猫飞天的博客-CSDN博客 Ubuntu20.04编译并运行imu_utils,并且标定IMU_学无止境的小龟的博客-CSDN博客 1.1 编译 code_utils 创建工作空间 1.1.1 修改 CMakeLists.txt 文件

    2024年02月09日
    浏览(43)
  • (已修正精度 1mm左右)Realsense d435i深度相机+Aruco+棋盘格+OpenCV手眼标定全过程记录

    最近帮别人做了个手眼标定,然后我标定完了大概精度能到1mm左右。所以原文中误差10mm可能是当时那个臂本身的坐标系有问题。然后用的代码改成了基于python的,放在下面。 新来的小伙伴可以只参考前面的代码就可以完成标定了。 有问题的话可以留言,一起交流~ 手眼标定

    2024年02月04日
    浏览(32)
  • 【完整教程】在win10平台下使用d435i深度相机读取数据并保存到本地,以便进行后续3D点云处理

    进入网址:RealSense SDK 2.0 直接拉到网站最下端,在Asset下可以看到很多exe可执行软件,由于我的电脑是win10,所以选择第三个。说句题外话,鄙人曾经考英语六级时记得Asset专门指不动资产,没错,就是房子! 下载完成后文件夹内有如下图所示软件,直接安装即可。 安装完成

    2024年02月02日
    浏览(73)
  • intel realsense d435i相机标定中文文档

    此文档参考了官方的英文文档,原地址面向英特尔®实感™深度摄像头的 IMU 校准工具 (intelrealsense.com) IMU概述:惯性测量单元(imu)通常由加速度计组成,加速度通常以国际系统(SI)的米/秒为单位输出平方(m/s^2)和陀螺仪,陀螺仪通常以SI单位测量角速度弧度/秒(rad/s)。英特尔Real

    2024年02月09日
    浏览(33)
  • 使用D435i相机录制TUM格式的数据集

    本文写于2023年3月14日。 D435i相机的rgb图像与depth图像的像素没有对齐,在此记录一下如何像素对齐 Ubuntu18.04 + ROS melodic 这一步需要使用 InterRealSenseD435i SDK2 ,可以参考此链接安装。 打开 Intel RealSense Viewer 。设置 Depth Stream 以及 Color Stream 的图像分辨率为 640 × 480 ,设置采集帧率

    2024年02月09日
    浏览(33)
  • ubuntu18.04安装Realsense D435i相机SDK及realsense-ros记录,为后期运行yolo v5作准备

    写在前面 :一定要注意各个版本之间的匹配问题,否则会报各种错误。 例如ROS版本和librealsense SDK版本之间的对应关系,以及realsense-ros(Wrapper)与librealsense SDK之间的对应关系 。 系统:ubuntu18.04 ros: melodic 附上Intel® RealSense github网站: https://github.com/IntelRealSense 以及安装教程

    2024年02月05日
    浏览(40)
  • ROS D435I识别目标并获取深度数据

    使用D435I相机,并基于ros获取到彩色图像和匹配后的深度数据,通过OPENCV对彩色图像进行目标识别,得到目标所在的像素范围,随后得到深度数据 重点在于:转换ros图像数据到opencv格式,得到目标像素点的实际深度值 d435i启动与修改 使用上述指令启动d435i,可以在里面进行分

    2024年02月10日
    浏览(31)
  • realsense D435i 实现外部时钟触发硬件同步多相机数据采集

    最近有一个调试D435i相机的工作,需要使得三个相机能够完成硬件触发的同步,具体来说,就是有一个固定频率的外部脉冲信号,使得三个相机能够根据外部脉冲信号的硬件触发完成双目图片、深度图片、彩色图片、IMU数据的实时响应采集,因为外部脉冲信号是通过一个精确

    2024年01月16日
    浏览(32)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包