L515 RGB frame and Depth frame save, when each time the keyboard is pressed
Hello, I am currently writing Python code that stores the rgb frame and the depth frame in the directory in numerical order, whenever I press the keyboard.
When I write the code as below, frames are stored in the directory in numerical order each time I press the keyboard, but the frame stops in the first frame. :(
When I write the code as below, frames are stored in the directory in numerical order each time I press the keyboard, but the frame stops in the first frame. :(
import pyrealsense2 as rs
import numpy as np
import cv2
pipeline = rs.pipeline()
config = rs.config()
pipeline_wrapper = rs.pipeline_wrapper(pipeline)
pipeline_profile = config.resolve(pipeline_wrapper)
device = pipeline_profile.get_device()
device_product_line = str(device.get_info(rs.camera_info.product_line))
found_rgb = False
for s in device.sensors:
if s.get_info(rs.camera_info.name) == 'RGB Camera':
found_rgb = True
break
if not found_rgb:
print("The demo requires Depth camera with Color sensor")
exit(0)
config.enable_stream(rs.stream.depth, 640, 480, rs.format.z16, 30)
if device_product_line == 'L500':
config.enable_stream(rs.stream.color, 640, 480, rs.format.bgr8, 30)
else:
config.enable_stream(rs.stream.color, 640, 480, rs.format.bgr8, 30)
# start streaming
pipeline.start(config)
try:
while True:
# Wait for a coherent pair of frames: depth and color
frames = 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 arrays
depth_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)
depth_colormap_dim = depth_colormap.shape
color_colormap_dim = color_image.shape
# If depth and color resolutions are different, resize color image to match depth image for display
if depth_colormap_dim != color_colormap_dim:
resized_color_image = cv2.resize(color_image, dsize=(depth_colormap_dim[1], depth_colormap_dim[0]), interpolation=cv2.INTER_AREA)
images1= resized_color_image
images2= depth_colormap
images = np.hstack((resized_color_image, depth_colormap))
else:
images1= color_image
images2= depth_colormap
images = np.hstack((color_image, depth_colormap))
# print frame image
cv2.namedWindow('RealSense1', cv2.WINDOW_AUTOSIZE)
cv2.namedWindow('RealSense2', cv2.WINDOW_AUTOSIZE)
cv2.imshow('RealSense1', images1)
cv2.imshow('RealSense2', images2)
i = 0
while i <151:
if cv2.waitKey(1) != -1:
cv2.imwrite(f'C:/Users/user/Desktop/test/c{i}.png' , images1)
cv2.imwrite(f'C:/Users/user/Desktop/test/d{i}.png' , images2)
i = i+1
finally:
# Stop streaming
pipeline.stop()
May I know where the problem occurred?
Inaddition, is there a way yo convert the obtained depth color map, that is, PNG file, into distance information in for each pixel?
thank you
from. Yoon
-
Hi Dlsrkrs2383,
Sorry for the delay in replying to you.
You can refer to SDK 2.0 code samples from here to write your code.
https://dev.intelrealsense.com/docs/code-samples
Meanwhile, RealSense SDK does not have the tools to convert the depth color map, into distance information for each pixel.
Regards,
Aznie
Intel RealSense Customer Support
Please sign in to leave a comment.
Comments
1 comment