Dies ist ein Memorandum, wenn Sie realsense D435 an einen PC mit Ubuntu 16.04 anschließen und ein Tiefenvideo mit Python speichern.
PC mit Ubuntu 16.04 installiert realsenseD435
pyrealsense2 Installation
pip install pyrealsense2
動画を保存する:record.py 保存した動画を再生する:play.py 保存した動画を連番画像にする:save.py
record.py
import pyrealsense2 as rs
import numpy as np
import cv2
import time
# Configure depth and color streams
config = rs.config()
config.enable_stream(rs.stream.infrared, 1, 640, 480, rs.format.y8, 30)
config.enable_stream(rs.stream.depth, 640, 480, rs.format.z16, 30)
config.enable_stream(rs.stream.color, 640, 480, rs.format.bgr8, 30)
config.enable_record_to_file('d435data.bag')
# Start streaming
pipeline = rs.pipeline()
pipeline.start(config)
start = time.time()
frame_no = 1
try:
while True:
# Wait for a coherent pair of frames: depth and color
frames = pipeline.wait_for_frames()
color_frame = frames.get_color_frame()
depth_frame = frames.get_depth_frame()
ir_frame = frames.get_infrared_frame()
fps = frame_no / (time.time() - start)
print(fps)
frame_no = frame_no+1
if not ir_frame or not color_frame :
ir_image = np.asanyarray(ir_frame .get_data())
depth_image = np.asanyarray(depth_color_frame.get_data())
color_image = np.asanyarray(color_frame.get_data())
finally:
pipeline.stop()
play.py
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import pyrealsense2 as rs
import numpy as np
import cv2
#Strom(Color/Depth/Infrared)Einstellungen von
config = rs.config()
#↓ Stellen Sie hier den Dateinamen ein
config.enable_device_from_file('d435data.bag')
#config.enable_device_from_file('./20191229.bag')
config.enable_stream(rs.stream.color, 640, 480, rs.format.bgr8, 30)
config.enable_stream(rs.stream.depth, 640, 480, rs.format.z16, 30)
config.enable_stream(rs.stream.infrared, 1, 640, 480, rs.format.y8, 30)
#Starten Sie das Streaming
pipeline = rs.pipeline()
profile = pipeline.start(config)
try:
while True:
#Warten auf einen Rahmen(Color & Depth)
frames = pipeline.wait_for_frames()
ir_frame = frames.get_infrared_frame()
depth_frame = frames.get_depth_frame()
color_frame = frames.get_color_frame()
if not depth_frame or not color_frame or not ir_frame :
continue
# Convert images to numpy arrays
ir_image = np.asanyarray(ir_frame .get_data())
depth_color_frame = rs.colorizer().colorize(depth_frame)
depth_image = np.asanyarray(depth_color_frame.get_data())
color_image = np.asanyarray(color_frame.get_data())
# Show images
cv2.namedWindow('ir_image', cv2.WINDOW_AUTOSIZE)
cv2.imshow('ir_image', ir_image)
cv2.namedWindow('color_image', cv2.WINDOW_AUTOSIZE)
cv2.imshow('color_image', color_image)
cv2.namedWindow('depth_image', cv2.WINDOW_AUTOSIZE)
cv2.imshow('depth_image', depth_image)
cv2.waitKey(1)
finally:
# Stop streaming
pipeline.stop()
save.py
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import pyrealsense2 as rs
import numpy as np
import cv2
#Strom(Color/Depth/Infrared)Einstellungen von
config = rs.config()
#↓ Stellen Sie hier den Dateinamen ein
config.enable_device_from_file('d435data.bag')
#config.enable_device_from_file('./20191229.bag')
config.enable_stream(rs.stream.color, 640, 480, rs.format.bgr8, 30)
config.enable_stream(rs.stream.depth, 640, 480, rs.format.z16, 30)
config.enable_stream(rs.stream.infrared, 1, 640, 480, rs.format.y8, 30)
#Starten Sie das Streaming
pipeline = rs.pipeline()
profile = pipeline.start(config)
try:
count = 0
while True:
count_padded = '%05d' % count
count += 1
#Warten auf einen Rahmen(Color & Depth)
frames = pipeline.wait_for_frames()
ir_frame = frames.get_infrared_frame()
depth_frame = frames.get_depth_frame()
color_frame = frames.get_color_frame()
if not depth_frame or not color_frame or not ir_frame :
continue
# Convert images to numpy arrays
ir_image = np.asanyarray(ir_frame .get_data())
depth_color_frame = rs.colorizer().colorize(depth_frame)
depth_image = np.asanyarray(depth_color_frame.get_data())
color_image = np.asanyarray(color_frame.get_data())
write_file_name_color = "color_" + count_padded + ".jpg "
cv2.imwrite(write_file_name_color, color_image)
write_file_name_depth = "depth_" + count_padded + ".jpg "
cv2.imwrite(write_file_name_depth, depth_image)
# Show images
cv2.namedWindow('ir_image', cv2.WINDOW_AUTOSIZE)
cv2.imshow('ir_image', ir_image)
cv2.namedWindow('color_image', cv2.WINDOW_AUTOSIZE)
cv2.imshow('color_image', color_image)
cv2.namedWindow('depth_image', cv2.WINDOW_AUTOSIZE)
cv2.imshow('depth_image', depth_image)
cv2.waitKey(1)
finally:
# Stop streaming
pipeline.stop()
So konvertieren Sie das gespeicherte Bild in ein Video Generieren Sie ein Video aus einem Seriennummernbild mit ffmpeg / Generieren Sie ein Seriennummernbild aus einem Video ~ Um zu verhindern, dass Frames gelöscht werden ~ Scheint gut zu sein.
Ich verwende die Python2.7-Serie, aber wenn es mehr ist, kann ein Fehler auftreten. ..
Ausführen von Intels Realsense D435 Aufnahme und Ausgabe mit Intels Realsense D435 3D-Erkennung ab Python !! Video aus Seriennummernbild mit ffmpeg generieren / Seriennummernbild aus Video generieren ~ So verhindern Sie das Löschen von Frames ~