Connectez realsense D435 à un PC sur lequel Ubuntu 16.04 est installé et enregistrez la vidéo de profondeur avec python

Objectif

Il s'agit d'un mémorandum lorsque realsense D435 est connecté au PC avec ubuntu 16.04 installé et la vidéo de profondeur est enregistrée avec python.

Préparation

PC avec ubuntu 16.04 installé realsenseD435

installation de pyrealsense2

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
#courant(Color/Depth/Infrared)paramètres de
config = rs.config()
#↓ Définissez le nom du fichier ici
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)

#Commencer le streaming
pipeline = rs.pipeline()
profile = pipeline.start(config)

try:
    while True:
        #En attente d'un cadre(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
#courant(Color/Depth/Infrared)paramètres de
config = rs.config()
#↓ Définissez le nom du fichier ici
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)

#Commencer le streaming
pipeline = rs.pipeline()
profile = pipeline.start(config)

try:
    count = 0
    while True:
        count_padded = '%05d' % count
        count += 1
        
        #En attente d'un cadre(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()

Autre

Pour convertir l'image enregistrée en vidéo Générer une vidéo à partir d'une image de numéro de série avec ffmpeg / Générer une image de numéro de série à partir d'une vidéo ~ Pour éviter les chutes d'images ~ Semble être bon.

Mesures d'erreur de codage

J'utilise la série python2.7, mais si c'est plus que cela, une erreur peut se produire. ..

référence

Exécution de Realsense D435 d'Intel Enregistrement et sortie avec Realsense D435 d'Intel Détection 3D à partir de Python !! Générer une vidéo à partir de l'image du numéro de série avec ffmpeg / Générer une image du numéro de série à partir de la vidéo ~ Comment éviter les chutes d'images ~

Recommended Posts

Connectez realsense D435 à un PC sur lequel Ubuntu 16.04 est installé et enregistrez la vidéo de profondeur avec python
Connectez une caméra Web disponible dans le commerce à un PC avec ubuntu 16.04 installé via USB et capturez une vidéo avec python
Connectez-vous à Cisco Catalyst avec CentOS7 + Python3 + netmiko et enregistrez la configuration localement
Essayez le fonctionnement de la base de données avec Python et visualisez avec d3
[Python] Comment créer un histogramme bidimensionnel avec Matplotlib
Connectez-vous à BigQuery avec Python
Connectez-vous à Wikipedia avec Python
Essayez d'ouvrir une sous-fenêtre avec PyQt5 et Python
Faites fonctionner Jupyter avec l'API REST pour extraire et enregistrer le code Python
Traitez le résultat de l'exécution de Splunk en utilisant Python et enregistrez-le dans un fichier
Résoudre ABC166 A ~ D avec Python
J'ai essayé de faire un processus d'exécution périodique avec Selenium et Python
Je voulais résoudre le problème ABC164 A ~ D avec Python
Connectez-vous à postgreSQL depuis Python et utilisez des procédures stockées dans une boucle.
J'obtiens un UnicodeDecodeError en essayant de me connecter à oracle avec python sqlalchemy
[Pyenv] Construire un environnement python avec ubuntu 16.04
Comment diviser et enregistrer un DataFrame
[Python] Comment convertir une liste bidimensionnelle en liste unidimensionnelle
Fractal pour faire et jouer avec Python
Connectez beaucoup de Python ou et et
Connectez-vous à MySQL avec Python dans Docker
J'ai installé et utilisé Numba avec Python3.5
Résoudre AtCoder ABC168 avec python (A ~ D)
Connectez-vous à s3 avec AWS Lambda Python
Python) Enregistrez le contenu de scraping sur un PC local
Connectez-vous à Pepper avec l'interpréteur Python de PEPPER Mac
J'ai essayé de faire un processus périodique avec CentOS7, Selenium, Python et Chrome
WEB grattage avec python et essayez de créer un nuage de mots à partir des critiques
[Python] Comment créer un environnement de serveur Web local avec SimpleHTTPServer et CGIHTTPServer
Comment lire un fichier CSV avec Python 2/3
Grattage de la nourriture avec python et sortie en CSV
Rechercher et télécharger automatiquement des vidéos YouTube avec Python
Envoyer un message à LINE avec Python (LINE Notify)
MessagePack-Try pour lier Java et Python avec RPC
Connectez Scratch X et Digispark avec bouteille
Construire un environnement python avec virtualenv et direnv
Je veux faire un jeu avec Python
Essayez de communiquer avec EV3 et PC! (MQTT)
Essayez de créer un code de "décryptage" en Python
Résolvez A ~ D du codeur yuki 247 avec python
Décidez d'une mission de laboratoire avec Python (fiction)
Étapes pour créer un bot Twitter avec Python
Lancer un serveur Web avec Python et Flask
Enregistrer l'objet dans un fichier avec pickle
Essayez de créer un groupe de dièdre avec Python
[Dédié à Telewa! ] J'utilise un PC avec une webcam.
Je veux écrire dans un fichier avec Python
Zubu amateur veut démarrer Python
Connectez-vous à MySQL avec Python sur Raspberry Pi
Effectuez une recherche Twitter à partir de Python et essayez de générer des phrases avec la chaîne de Markov.
J'ai créé un programme pour convertir des images en art ASCII avec Python et OpenCV
[Introduction au trading système] J'ai dessiné un oscillateur stochastique avec python et joué avec ♬
Comment mettre Pyenv sur Amazon Linux et Ubuntu pour créer un environnement Python 3.6.0
Créez rapidement un tableau de bord d'analyse de données Python avec Streamlit et déployez-le sur AWS
Je veux découper uniquement le visage d'une image de personne avec Python et l'enregistrer ~ Détection de visage et rognage avec face_recognition ~
Comment convertir / restaurer une chaîne avec [] en python
Procédure pour charger MNIST avec python et sortie en png
Mémo connecté à HiveServer2 d'EMR avec python
Obtenez des images et des vidéos de la chronologie des médias avec Python + Tweepy