• RealSense D435 的开发日记


    🌞欢迎来到机器学习的世界 
    🌈博客主页:卿云阁

    💌欢迎关注🎉点赞👍收藏⭐️留言📝

    🌟本文由卿云阁原创!

    🌠本阶段属于练气阶段,希望各位仙友顺利完成突破

    📆首发时间:🌹2021年6月22日🌹

    ✉️希望可以和大家一起完成进阶之路!

    🙏作者水平很有限,如果发现错误,请留言轰炸哦!万分感谢!

     6月22日    星期三   天气晴


    目录

    🍈 一、与RealSense的初识

     🍉二. D435i硬件结构及各个组件原理详解

    🍊三、测试与使用

    🍋四、Python接口的安装与使用

    🍍五、显示彩色图和深度图

    🍈 一、与RealSense的初识

       最近,想写篇论文,苦于没有方向,我找到了老师,发现这个方向可以出论文,为此我开始了我艰难的学习之路。虽然Intel官网上RealSense相机看起来都很大的样子,但其实真正拿到手里会发现其实是非常小巧的。


     🍉二. D435i硬件结构及各个组件原理详解

    其集成了两个红外传感器(IR Stereo Camera)、一个红外激光发射器(IR Projector)和一个彩色相机(Color Camera)。

    立体深度相机系统主要包括两部分:视觉处理器D4和深度模块。主机处理器连接 USB 2.0 / USB 3.1 Gen 1。

    深度模块采用立体视觉的左右成像器、可选的红外激光发射器和 RGB 色彩传感器。

    工作原理

         其原理是基于三角测量法,左右红外相机进行测量深度,中间红外点阵投射器相当于补光灯,不打开也能测深度,只是效果不好;最右边的rgb相机用于采集彩色图片,最终可以将彩色视频流与深度流进行对齐。

          基于左右图像的视差来求得距离。只是相比于普通彩色rgb相机,红外ir相机是用来接收目标返回的红外光线的,得到的是左右两幅红外灰度图像。若把屋里灯光关掉,黑暗的环境,红外ir相机一样可以生成深度图像,只是质量略有下降。

         

     

    🍊三、测试与使用

    RGB Module可以显示RGB影像,Stereo Module可以开启深度图显示

    如果可以正常显示上图中的画面,那么就说明RealSense的基本配置就成功了,可以向电脑传输数据了

    🍋四、Python接口的安装与使用

    Python的接口安装其实非常简单,pip一行命令即可。

    pip install pyrealsense2

    下面内容取自PyRealSense2包的介绍页面

    1. import pyrealsense2 as rs
    2. pipe = rs.pipeline()
    3. profile = pipe.start()
    4. try:
    5. for i in range(0, 100):
    6. frames = pipe.wait_for_frames()
    7. for f in frames:
    8. print(f.profile)
    9. finally:
    10. pipe.stop()

     

    就说明安装是成功的了。

    🍍五、显示彩色图和深度图

    1. import pyrealsense2 as rs
    2. import numpy as np
    3. import cv2
    4. if __name__ == "__main__":
    5. # Configure depth and color streams
    6. pipeline = rs.pipeline()
    7. config = rs.config()
    8. config.enable_stream(rs.stream.depth, 640, 480, rs.format.z16, 30)
    9. config.enable_stream(rs.stream.color, 640, 480, rs.format.bgr8, 30)
    10. # Start streaming
    11. pipeline.start(config)
    12. try:
    13. while True:
    14. # Wait for a coherent pair of frames: depth and color
    15. frames = pipeline.wait_for_frames()
    16. depth_frame = frames.get_depth_frame()
    17. color_frame = frames.get_color_frame()
    18. if not depth_frame or not color_frame:
    19. continue
    20. # Convert images to numpy arrays
    21. depth_image = np.asanyarray(depth_frame.get_data())
    22. color_image = np.asanyarray(color_frame.get_data())
    23. # Apply colormap on depth image (image must be converted to 8-bit per pixel first)
    24. depth_colormap = cv2.applyColorMap(cv2.convertScaleAbs(depth_image, alpha=0.03), cv2.COLORMAP_JET)
    25. # Stack both images horizontally
    26. images = np.hstack((color_image, depth_colormap))
    27. # Show images
    28. cv2.namedWindow('RealSense', cv2.WINDOW_AUTOSIZE)
    29. cv2.imshow('RealSense', images)
    30. key = cv2.waitKey(1)
    31. # Press esc or 'q' to close the image window
    32. if key & 0xFF == ord('q') or key == 27:
    33. cv2.destroyAllWindows()
    34. break
    35. finally:
    36. # Stop streaming
    37. pipeline.stop()

     

  • 相关阅读:
    尚硅谷设计模式学习(十八)观察者模式
    车载语音识别系统语音数据采集标注案例
    QT 5.15向服务器发送POST请求,接收并解析服务器的响应数据(嵌套解析JSON数据)
    通信用多模光纤主要有哪些类型?OM1~OM5有什么区别
    Java List
    微服务分布式架构中,如何实现优雅发版?
    猫罐头怎么选择?市面上最受欢迎的5款猫罐头推荐!
    Unity WebGL ios 跳转URL
    Jmeter——结合Allure展示测试报告
    _Linux 静态库
  • 原文地址:https://blog.csdn.net/zzqingyun/article/details/125408342