Verbinden Sie realsense D435 mit einem PC, auf dem Ubuntu 16.04 installiert ist, und speichern Sie das Tiefenvideo mit Python

Zweck

Dies ist ein Memorandum, wenn Sie realsense D435 an einen PC mit Ubuntu 16.04 anschließen und ein Tiefenvideo mit Python speichern.

Vorbereitung

PC mit Ubuntu 16.04 installiert realsenseD435

pyrealsense2 Installation

pip install pyrealsense2

Code

動画を保存する: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()

Andere

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.

Codierungsfehler Maßnahmen

Ich verwende die Python2.7-Serie, aber wenn es mehr ist, kann ein Fehler auftreten. ..

Referenz

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 ~

Recommended Posts

Verbinden Sie realsense D435 mit einem PC, auf dem Ubuntu 16.04 installiert ist, und speichern Sie das Tiefenvideo mit Python
Schließen Sie eine handelsübliche Webkamera an einen PC mit Ubuntu 16.04 an, der über USB installiert ist, und nehmen Sie ein Video mit Python auf
Ssh stellt mit CentOS7 + Python3 + netmiko eine Verbindung zu Cisco Catalyst her und speichert die Konfiguration lokal
Probieren Sie die DB-Operation mit Python aus und visualisieren Sie sie mit d3
[Python] So erstellen Sie mit Matplotlib ein zweidimensionales Histogramm
Stellen Sie mit Python eine Verbindung zu BigQuery her
Stellen Sie mit Python eine Verbindung zu Wikipedia her
Versuchen Sie, ein Unterfenster mit PyQt5 und Python zu öffnen
Führen Sie Jupyter mit der REST-API aus, um Python-Code zu extrahieren und zu speichern
Verarbeiten Sie das Ausführungsergebnis von Splunk mit Python und speichern Sie es in einer Datei
Löse ABC166 A ~ D mit Python
Ich habe versucht, mit Selenium und Python einen regelmäßigen Ausführungsprozess durchzuführen
Ich wollte das ABC164 A ~ D-Problem mit Python lösen
Stellen Sie von Python aus eine Verbindung zu postgreSQL her und verwenden Sie gespeicherte Prozeduren in einer Schleife.
Ich erhalte einen UnicodeDecodeError, wenn ich versuche, mit Python sqlalchemy eine Verbindung zu Oracle herzustellen
[Pyenv] Erstellen einer Python-Umgebung mit Ubuntu 16.04
So teilen und speichern Sie einen DataFrame
[Python] So konvertieren Sie eine zweidimensionale Liste in eine eindimensionale Liste
Fraktal zum Erstellen und Spielen mit Python
Verbinde viel Python oder und und
Stellen Sie mit Python in Docker eine Verbindung zu MySQL her
Ich habe Numba mit Python3.5 installiert und verwendet
Löse AtCoder ABC168 mit Python (A ~ D)
Stellen Sie mit AWS Lambda Python eine Verbindung zu s3 her
Python) Speichern Sie Scraping-Inhalte auf dem lokalen PC
Stellen Sie mit dem Python-Interpreter von PEPPER Mac eine Verbindung zu Pfeffer her
Ich habe versucht, einen periodischen Prozess mit CentOS7, Selenium, Python und Chrome durchzuführen
WEB Scraping mit Python und versuchen, aus Bewertungen eine Wortwolke zu machen
[Python] So erstellen Sie eine lokale Webserverumgebung mit SimpleHTTPServer und CGIHTTPServer
Lesen einer CSV-Datei mit Python 2/3
Kratzen Sie das Essen mit Python und geben Sie es an CSV aus
Suchen und laden Sie YouTube-Videos automatisch mit Python herunter
Senden Sie eine Nachricht mit Python an LINE (LINE Notify)
MessagePack-Versuchen Sie, Java und Python mit RPC zu verbinden
Verbinden Sie Scratch X und Digispark mit der Flasche
Erstellen einer Python-Umgebung mit virtualenv und direnv
Ich möchte ein Spiel mit Python machen
Versuche mit EV3 und PC zu kommunizieren! (MQTT)
Versuchen Sie, in Python einen "Entschlüsselungs" -Code zu erstellen
Löse A ~ D des Yuki-Codierers 247 mit Python
Entscheide dich für einen Laborauftrag mit Python (Fiktion)
Schritte zum Erstellen eines Twitter-Bots mit Python
Starten Sie einen Webserver mit Python und Flask
Speichern Sie das Objekt in einer Datei mit pickle
Versuchen Sie, mit Python eine Diedergruppe zu bilden
[Telewa gewidmet! ] Ich betreibe einen PC mit einer Webkamera.
Ich möchte mit Python in eine Datei schreiben
Zubu Amateur will Python starten
Stellen Sie mit Python auf Raspberry Pi eine Verbindung zu MySQL her
Führen Sie eine Twitter-Suche in Python durch und versuchen Sie, Sätze mit der Markov-Kette zu generieren.
Ich habe ein Programm erstellt, um Bilder mit Python und OpenCV in ASCII-Grafik umzuwandeln
[Einführung in den Systemhandel] Ich habe einen Stochastic Oscillator mit Python gezeichnet und damit gespielt ♬
So stellen Sie pyenv unter Amazon Linux und Ubuntu ein, um eine Python 3.6.0-Umgebung zu erstellen
Erstellen Sie mit Streamlit schnell ein Python-Datenanalyse-Dashboard und stellen Sie es in AWS bereit
Ich möchte mit Python nur das Gesicht aus einem Personenbild ausschneiden und speichern ~ Gesichtserkennung und Zuschneiden mit face_recognition ~
So konvertieren / wiederherstellen Sie einen String mit [] in Python
Prozedur zum Laden von MNIST mit Python und zur Ausgabe an png
Memo mit Python mit HiveServer2 von EMR verbunden
Mit Python + Tweepy können Sie Bilder und Videos der Medienzeitleiste abrufen