realsense D435I获取RGB图、深度图和左右图

  system:Ubuntu18.04.4LTS

  memory:  12GiB

  CPU: i5-4590

  Pycharm     Python

  OpenCV

 1 import pyrealsense2 as rs
 2 import numpy as np
 3 import cv2
 4 
 5 pipeline = rs.pipeline()
 6 
 7 config = rs.config()
 8 
 9 config.enable_stream(rs.stream.color, 640, 480, rs.format.bgr8, 15)  #10、15或者30可选,20或者25会报错,其他帧率未尝试
10 config.enable_stream(rs.stream.infrared, 1, 640, 480, rs.format.y8, 15)
11 config.enable_stream(rs.stream.infrared, 2, 640, 480, rs.format.y8, 15)
12 config.enable_stream(rs.stream.depth, 640, 480, rs.format.z16, 15)
13 
14 profile = pipeline.start(config)
15 
16 # Getting the depth sensor's depth scale (see rs-align example for explanation)
17 depth_sensor = profile.get_device().first_depth_sensor()
18 depth_scale = depth_sensor.get_depth_scale()
19 print("Depth Scale is: " , depth_scale)
20 
21 clipping_distance_in_meters = 1 #1 meter
22 clipping_distance = clipping_distance_in_meters / depth_scale
23 
24 # Create an align object
25 # rs.align allows us to perform alignment of depth frames to others frames
26 # The "align_to" is the stream type to which we plan to align depth frames.
27 align_to = rs.stream.color
28 align = rs.align(align_to)
29 
30 
31 try:
32     while True:
33         frames = pipeline.wait_for_frames()
34 
35     # Align the depth frame to color frame
36         aligned_frames = align.process(frames)
37         # Get aligned frames
38         aligned_depth_frame = aligned_frames.get_depth_frame()  # aligned_depth_frame is a 640x480 depth image
39         if not aligned_depth_frame:
40             continue
41         depth_frame = np.asanyarray(aligned_depth_frame.get_data())
42     # 将深度图转化为伪彩色图方便观看
43         depth_colormap = cv2.applyColorMap(cv2.convertScaleAbs(depth_frame, alpha=0.03), cv2.COLORMAP_JET)
44         cv2.imshow('1 depth', depth_colormap)
45 
46     # color frames
47         color_frame = aligned_frames.get_color_frame()
48         if not color_frame:
49             continue
50         color_frame = np.asanyarray(color_frame.get_data())
51         cv2.imshow('2 color', color_frame)
52 
53     # left frames
54         left_frame = frames.get_infrared_frame(1)
55         if not left_frame:
56             continue
57         left_frame = np.asanyarray(left_frame.get_data())
58         cv2.imshow('3 left_frame', left_frame)
59 
60     # right frames
61         right_frame = frames.get_infrared_frame(2)
62         if not right_frame:
63             continue
64         right_frame = np.asanyarray(right_frame.get_data())
65         cv2.imshow('4 right_frame', right_frame)
66 
67         c = cv2.waitKey(1)
68 
69         
70 
71         # 如果按下ESC则关闭窗口(ESC的ascii码为27),同时跳出循环
72         if c == 27:
73             cv2.destroyAllWindows()
74             break
75 
76 finally:
77     # Stop streaming
78     pipeline.stop()
79 
80 #深度图上色参考https://github.com/IntelRealSense/librealsense/blob/jupyter/notebooks/distance_to_object.ipynb
81 #对齐参考:https://github.com/IntelRealSense/librealsense/blob/master/wrappers/python/examples/align-depth2color.py
82 #左右图获取参考https://blog.csdn.net/Hanghang_/article/details/102489762
83 #其他参考https://blog.csdn.net/Dontla/article/details/102701680
 

 

  如果Alt+shift+Enter 安装不了cv2,那就直接在pycharm的terminal  敲命令,其他也是一样

  

 

 

 

  效果如下:

 

 

   

  红外光斑以后再想办法去除,目前对我影响不大。目前只知道ros环境下可以配置关闭。

posted @ 2020-06-05 17:13  Json2019  阅读(8709)  评论(2编辑  收藏  举报