文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

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

2023-09-12 18:10

关注

目录


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


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

在这里插入图片描述

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即可。

在这里插入图片描述

进入到下载界面之后这里会介绍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的时候要注意我们的平台的版本信息,否则会出大问题。
在这里插入图片描述

之后是对不同的package的安装,这个根据自己的需求选择即可:
在这里插入图片描述
下载完成后需要进行安装,安装过程中直接一直点next即可,似乎无法更改路径!!!
默认安装即可。

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

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

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

保存的图片如下图所示:
在这里插入图片描述

运行结果如下,可以达到和Intel® RealSense™ Viewer相同的效果:
在这里插入图片描述

完整代码如下

import pyrealsense2 as rsimport numpy as npimport 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 streamingprofile = pipeline.start(config) # 创建对齐对象, rs.align 允许我们将深度帧与其他帧对齐, "align_to" 是计划对其深度帧的流类型align_to = rs.stream.coloralign = 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()

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

1.Linux Distribution——命令行安装

对Linux平台的要求:
在这里插入图片描述
注册公钥

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-dkmssudo apt-get install librealsense2-utils

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

sudo apt-get install librealsense2-devsudo apt-get install librealsense2-dbg

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

realsense-viewer

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

在这里插入图片描述
此外还有一些删除命令安装包的命令:

2.源码安装

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

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

-b v2.50.0指的是2.50.0版本。
在这里插入图片描述
更新系统

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-devsudo apt-get install libusb-1.0-0-dev pkg-configsudo apt-get install libglfw3-devsudo apt-get install libssl-dev

安装内核所需的模块

cd librealsense
./scripts/setup_udev_rules.sh

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

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

编译和安装:

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

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

realsense-viewer

在这里插入图片描述

大功告成!!!

来源地址:https://blog.csdn.net/AaaA00000001/article/details/127835201

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯