def expect(depth_frame=None, color_frame=None, nothing_else=False): """ Looks at the syncer queue and gets the next frame from it if available, checking its contents against the expected frame numbers. """ global syncer, playback_status f = syncer.poll_for_frame() if playback_status is not None: countdown = 50 # 5 seconds while not f and playback_status != rs.playback_status.stopped: countdown -= 1 if countdown == 0: break time.sleep(0.1) f = syncer.poll_for_frame() # NOTE: f will never be None if not f: test.check(depth_frame is None, "expected a depth frame") test.check(color_frame is None, "expected a color frame") return False log.d("Got", f) fs = rs.composite_frame(f) if fs: depth = fs.get_depth_frame() else: depth = rs.depth_frame(f) test.info("actual depth", depth) test.check_equal(depth_frame is None, not depth) if depth_frame is not None and depth: test.check_equal(depth.get_frame_number(), depth_frame) if fs: color = fs.get_color_frame() elif not depth: color = rs.video_frame(f) else: color = None test.info("actual color", color) test.check_equal(color_frame is None, not color) if color_frame is not None and color: test.check_equal(color.get_frame_number(), color_frame) if nothing_else: f = syncer.poll_for_frame() test.info("Expected nothing else; actual", f) test.check(not f) return True
import pyrealsense2 as rs2 import time p = rs2.pipeline() p.start() while True: frames = rs2.composite_frame(p.wait_for_frames()) depth = rs2.depth_frame(frames.get_depth_frame()) width = depth.get_height() height = depth.get_width() dist_to_center = depth.get_distance(int(width / 2), int(height / 2)) print("The camera is facing an object " + str(dist_to_center) + "meters away") # time.sleep(.5)