计算机视觉——Intel RealSense D435的使用及python环境下的实现

什么是深度相机,以及深度相机的分类和工作原理

​ 深度相机是一种能够捕捉场景中物体的深度信息(即物体与相机之间的距离)的设备。与传统的二维相机不同,深度相机除了拍摄图像的颜色和亮度外,还能生成一个关于场景中每个像素距离相机的深度数据,通常称为“深度图”。

深度相机根据其工作原理和技术不同,可以分为几种主要类型,每种类型的深度捕捉方式和适用场景也有所不同。以下是常见的深度相机分类:
  1. 立体视觉相机(Stereo Vision Camera)

    • 原理:通过两台或多台相机从不同角度拍摄同一场景,利用视差来计算每个像素的深度信息。通过对比两张图像中的相同点,计算出物体的三维空间位置。
  2. 结构光相机(Structured Light Camera)

    • 原理:通过投射已知的光模式(如条纹、网格等)到物体表面,然后通过相机捕捉光模式的变形情况,基于变形计算出物体表面的深度信息。
  3. 时间飞行(ToF, Time-of-Flight)相机

    • 原理:通过发射激光束并接收激光反射回来的时间来计算物体与激光发射器之间的距离。激光雷达一般具有高精度和较远的测距能力。
  4. RGB-D相机

    • 原理:RGB-D相机结合了传统的RGB相机(彩色图像)和深度传感器(如结构光或ToF)来同时捕捉场景的颜色和深度信息。D代表的是深度(Depth)。

Intel RealSense D435介绍

Intel RealSense D435 是 Intel 推出的一款高性能深度相机,属于 RealSense 系列产品的一部分。它结合了深度传感技术和 RGB 图像捕捉功能,广泛应用于机器人、增强现实(AR)、虚拟现实(VR)、计算机视觉、三维扫描等多个领域。Intel RealSense D435 是一款功能强大、性能均衡的深度相机,适用于许多计算机视觉、机器人、AR/VR 以及其他需要实时深度感知的应用。

在这里插入图片描述

  • 工作原理

    ​ 左右红外相机(接收器)分贝产生两幅也就是左侧和右侧ir灰度图像,中间红外点阵发射器(红外散斑)相当于补光灯,进而可以得到点云。红外点阵发射器强度可调,是否发射也可调,不打开也能测深度,只是效果不好。最右边的rgb相机用于采集彩色图片,最终可以将彩色视频流与深度流进行对齐。

    • 左右红外相机(接收器)
      • 红外灰度图像:RealSense D435 使用左右两个红外相机(IR 摄像头)来采集深度数据。由于它们相互间有一定的基线(距离),这使得系统能够通过比较图像中的视差来估算每个像素的深度信息。这些相机捕捉的图像通常是 灰度图像,即只包含深度信息,而不包含颜色信息。
      • 视差计算:左右红外相机拍摄的图像之间的像素差异(视差)用于计算场景中物体的距离。通过对这两个图像中的相同特征点进行匹配,系统可以推算出每个点的深度,从而生成深度图。
    • 红外点阵发射器(红外散斑)
      • 功能:中间的 红外点阵发射器 通常用于生成 红外光散斑,这是一种已知模式的红外光,通过投射到物体表面,辅助深度计算。点阵发射器的作用类似于一种 补光灯,在低光或无光环境下帮助相机更好地捕捉深度数据。
    • 点云生成
      • 点云(Point Cloud):通过左右红外相机捕获的深度数据和红外点阵发射器的辅助光源,RealSense D435 可以生成一个 三维点云,这个点云表示了物体的三维空间坐标,通常每个点都具有 (x, y, z) 坐标,且与场景中的物体表面相对应。
      • 点云数据:这个三维点云数据可以用于物体识别、三维建模、环境扫描、手势识别等各种高级视觉任务。
    • RGB相机
      • 彩色图像采集:最右侧的 RGB 相机 负责采集场景的 彩色图像。RGB 摄像头和红外传感器(立体视觉和红外点阵发射器)配合工作,通常会提供 彩色视频流,并与深度流进行对齐,得到 彩色深度图。这个过程可以通过硬件或软件实现图像与深度信息的 对齐(alignment),即将每个深度图中的点与对应的彩色像素匹配。

windows中如何使用Intel RealSense D435

https://github.com/IntelRealSense/librealsense/blob/master/doc/distribution_windows.md

可视化界面(Intel RealSense Viewer)的安装以及SDK的安装可以参照官方指南。装SDK会附带安装可视化界面Viewer、Examples和Depth Quality Tool。

在这里插入图片描述

只用装一个SDK就行,会自动给你装上可视化viewer和tool

在这里插入图片描述

点下一步下一步就行。安装完成后就可以看到深度图和彩色图

在这里插入图片描述

在这里插入图片描述

在python中调用深度相机

  1. 首先在windows下安装anaconda和pycharm,然后配置open3d新环境。(这个自己找资源配置)

  2. 创建一个新的环境,python 版本按你的需求,我的是3.11

    conda create -n 你的环境名字 python=3.11
    
  3. 配置opencv环境,安装opencv,我这里都下的最新的包

    pip install opencv-python
    pip install opencv-contrib-python
    
  4. 接着安装open3d和pyrealsense2,open3d需要等很长时间。

    pip install open3d
    pip install pyrealsense2
    
  5. 之后我们就需要把Intel RealSense D435的包下的 SDK 文件复制到我们的环境下,我这里SDK文件所在是 :D:\A_My_Project\robot\deep_camera\Intel RealSense SDK 2.0\bin\x64,然后把pyd和dll文件(如图)复制到我们python环境下,D:\anaconda3\envs\cv\DLLs(这里是因为我们用的anconda创建的环境,如果是单独的python环境需要找到对应的目录下)。

    在这里插入图片描述

  6. 打开pycharm即可测试,代码和效果如下:

    import pyrealsense2 as rs
    import numpy as np
    import cv2if __name__ == "__main__":# Configure depth and color streamspipeline = 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 streamingpipeline.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()breakfinally:# Stop streamingpipeline.stop()

在这里插入图片描述

你可以进这个github项目进行案例学习

在这里插入图片描述
github官网地址:https://github.com/IntelRealSense/

官方文档:https://dev.intelrealsense.com/docs/docs-get-started

官方API:https://intelrealsense.github.io/librealsense/python_docs/_generated/pyrealsense2.html#module-pyrealsense2

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/5659.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Servlet快速入门

Servlet 由于目前主流使用SpringBoot进行开发Servlet可以说是时代的眼泪,这篇文章主要介绍我基于SpringBoot对应Servlet的浅薄认知,有利于更好的理解前端界面和java服务器的数据交换过程 快速入门 我比较推荐这篇文章来对Servlet有一个大概的了解 都2…

windows平台intel-vpl编译

需要先在本机编译好opencl库 git clone --recursive https://github.com/KhronosGroup/OpenCL-SDK.git cmake -A x64 -T v143 -D OPENCL_SDK_BUILD_OPENGL_SAMPLESOFF -B OpenCL-SDK\build -S OpenCL-SDKcmake --build OpenCL-SDK\build --config Releasecmake --install O…

MTK MT6890:LCD ST7789P3驱动移植调试

一、功能简述 LK阶段:开机logo、关机充电动画 Kernel阶段:开机logo、GUI用户交互界面 二、硬件连接及器件选型 ST7789P3 240RGB * 320 dot 262K Color TFT屏 SPI-II型panel ST7789P3接主控MT6890平台的DBI-C接口 SPI-II型读时序: 写时序: GPIO206: DISP_PWM (Func1) …

Vscode配置continue运行ollama部署的Qwen2.5

Vscode配置continue运行ollama部署的Qwen2.5 1.安装Continue插件 离线安装Continue访问下面网址下载插件:continue插件下载地址 将continue窗口迁右边(根据个人习惯,可选) 点击Continue图标会出CONTINUE窗口,鼠标选…

62,【2】 BUUCTF WEB [强网杯 2019]Upload1

进入靶场 此处考点不是SQL,就正常注册并登录进去 先随便传一个 进行目录扫描,我先用爆破代替 先随便后面写个文件名 为了提供payload位置 www.tar.gz真的存在 返回浏览器修改url就自动下载了 看到tp5,应该是ThinkPHP5框架 参考此博客的思路方法c[强网杯…

SpringCloud微服务Gateway网关简单集成Sentinel

Sentinel是阿里巴巴开源的一款面向分布式服务架构的轻量级流量控制、熔断降级组件。Sentinel以流量为切入点,从流量控制、熔断降级、系统负载保护等多个维度来帮助保护服务的稳定性。 官方文档:https://sentinelguard.io/zh-cn/docs/introduction.html …

高效安全文件传输新选择!群晖NAS如何实现无公网IP下的SFTP远程连接

文章目录 前言1. 开启群晖SFTP连接2. 群晖安装Cpolar工具3. 创建SFTP公网地址4. 群晖SFTP远程连接5. 固定SFTP公网地址6. SFTP固定地址连接 前言 随着远程办公和数据共享成为新常态,如何高效且安全地管理和传输文件成为了许多人的痛点。如果你正在寻找一个解决方案…

U3D的.Net学习

Mono:这是 Unity 最初采用的方式,它将 C# 代码编译为中间语言 (IL),然后在目标平台上使用虚拟机 (VM) 将其转换为本地机器码执行。 IL2CPP:这是一种较新的方法,它会将 C# 代码先编译为 C 代码,再由 C 编译器…

2024年博客之星主题创作|2024年度感想与新技术Redis学习

Redis工具深入了解 1.引言与感想2.Redis工具了解2.分布式系统了解2.1单机架构2.2分布式是什么2.3应用服务和数据库服务分离2.4引入更多的应用服务器2.5理解负载均衡器2.6数据库读写分离2.7引入缓存2.8数据库分库分表2.9引入微服务2.10分布式系统小结 1.引言与感想 2024学习了很…

IDEA中Maven使用的踩坑与最佳实践

文章目录 IDEA中Maven使用的踩坑与最佳实践一、环境配置类问题1. Maven环境配置2. IDEA中Maven配置建议 二、常见问题与解决方案1. 依赖下载失败2. 依赖冲突解决3. 编译问题修复 三、效率提升技巧1. IDEA Maven Helper插件使用2. 常用Maven命令配置3. 多模块项目配置4. 资源文件…

qml Timer详解

1、概述 Timer是QML中用于创建定时器的元素。它允许你设置一个延迟时间,在延迟时间结束后触发一个信号或执行一段代码。Timer非常适用于需要在特定时间间隔后执行操作的场景,如动画延迟、定时任务等。 2、重要属性 interval: 定时器触发的时间间隔&…

为什么redis会开小差?Redis 频繁异常的深度剖析与解决方案

文章目录 导读为什么redis会开小差?1.连接数过多2.bigkey3.慢命令操作4.内存策略不合理5.外部数据双写一致性6.保护机制未开启7. 数据集中过期8. CPU饱和9. 持久化阻塞10. 网络问题结论 导读 提起分布式缓存,想必大多数同学脑海中都会浮出redis这个名字…

国产编辑器EverEdit - 快捷目录

1 面板-快捷目录 1.1 应用场景 快捷目录提供了一个用户常用文件或文件夹的收集器,方便用户快速找到并打开需要频繁编辑的文件。 1.2 使用方法 1.2.1 打开快捷目录面板 步骤1:选择菜单“查看 -> 停靠窗格 -> 快捷目录”,即可打开快捷…

正则表达式的艺术:轻松驾驭 Python 的 re 库

目录 一、正则表达式的基本概念 二、Python 的 re 库简介 三、正则表达式的元字符 四、正则表达式的贪婪与非贪婪模式 五、实战案例 六、总结 正则表达式(Regular Expression)是文本处理中不可或缺的工具,它强大而灵活,能够…

炸场硅谷,大模型“蒸汽机”迎来“瓦特时刻”

作者 | 曾响铃 文 | 响铃说 中国大模型又在包括硅谷在内的全球AI圈炸场了。 两天前,幻方量化旗下AI公司深度求索(DeepSeek),以及月之暗面相隔20分钟相继发布了自家最新版推理模型,分别是DeepSeek-R1以及Kimi 全新多…

备赛蓝桥杯之第十五届职业院校组省赛第二题:分享点滴

提示:本篇文章仅仅是作者自己目前在备赛蓝桥杯中,自己学习与刷题的学习笔记,写的不好,欢迎大家批评与建议 由于个别题目代码量与题目量偏大,请大家自己去蓝桥杯官网【连接高校和企业 - 蓝桥云课】去寻找原题&#xff0…

MyBatis最佳实践:提升数据库交互效率的秘密武器

第一章:框架的概述: MyBatis 框架的概述: MyBatis 是一个优秀的基于 Java 的持久框架,内部对 JDBC 做了封装,使开发者只需要关注 SQL 语句,而不关注 JDBC 的代码,使开发变得更加的简单MyBatis 通…

1. 基于图像的三维重建

1. 基于图像的三维重建 核心概念三维重建中深度图、点云的区别?深度图点云总结 深度图到点云还需要什么步骤?1. **获取相机内参**2. **生成相应的像素坐标**3. **计算三维坐标**4. **构建点云**5. **处理颜色信息(可选)**6. **去除…

将UI界面交给第三方库

当你了解了 Vue 项目构建和开发的基本知识后,我认为接下来你一定想亲自在构建出的项目中填充自己的业务和功能逻辑,因为目前其还是空白的。 但是这里我不会教你如何实现一个具体的业务和功能模块,因为每个人想要实现的东西都可能不尽相同。如…

深圳大学-计算机系统(3)-实验三取指和指令译码设计

实验目标 设计完成一个连续取指令并进行指令译码的电路,从而掌握设计简单数据通路的基本方法。 实验内容 本实验分成三周(三次)完成:1)首先完成一个译码器(30分);2)接…