Closed3

JetsonのCSIカメラを2台同期撮影したい。

fate_shelledfate_shelled

1台のカメラでのキャプチャ(Python, OpenCV+Gstreamer)

import cv2

def open_gstreamer(sensor_id=0, width=1920, height=1080, fps=30):
    GST_STR = f'nvarguscamerasrc sensor-id={sensor_id}\
            ! video/x-raw(memory:NVMM), width={width}, height={height}, format=(string)NV12, framerate=(fraction){fps}/1 \
            ! nvvidconv ! video/x-raw, width=(int){width}, height=(int){height}, format=(string)BGRx \
            ! videoconvert  \
            ! appsink'
    return cv2.VideoCapture(GST_STR, cv2.CAP_GSTREAMER)
fate_shelledfate_shelled

上記スクリプトを使って、1920x1080@30fpsで2つのカメラを別々に起動したら、大体同じくらいのタイミングでは撮影できているが、0.5sくらいの遅延が発生。

fate_shelledfate_shelled

2台のカメラを同時にキャプチャして、横並びの1つの画像として取得。

videomixerを使うとStreamを並べることができる。
ストップウォッチアプリを撮影してみて、同時にキャプチャできていることを確認。(厳密には同期ではないかも)

import cv2

def open_gstreamer(sensor_ids=[0, 1], width=640, height=480, fps=30):
    sensor0 = sensor_ids[0]
    sensor1 = sensor_ids[1]
    GST_STR = "videomixer background=1 name=mix " + \
              "sink_0::xpos=0 sink_0::ypos=0 sink_0::alpha=1 sink_0::zorder=0 " + \
              f"sink_1::xpos={width} sink_1::ypos=0 sink_1::alpha=1 sink_1::zorder=1 " + \
              f"! videoconvert ! appsink sync=false " + \
              f'nvarguscamerasrc sensor-id={sensor0} ' + \
              f'! video/x-raw(memory:NVMM), width={width}, height={height}, format=(string)NV12, framerate=(fraction){fps}/1 ' + \
              f'! nvvidconv ! video/x-raw, width=(int){width}, height=(int){height}, format=(string)BGRx' + \
              f'! queue ' + \
              f'! mix.sink_0 ' + \
              f'nvarguscamerasrc sensor-id={sensor1} ' + \
              f'! video/x-raw(memory:NVMM), width={width}, height={height}, format=(string)NV12, framerate=(fraction){fps}/1 ' + \
              f'! nvvidconv ! video/x-raw, width=(int){width}, height=(int){height}, format=(string)BGRx' + \
              f'! queue ' + \
              f"! mix.sink_1"
    return cv2.VideoCapture(GST_STR, cv2.CAP_GSTREAMER)
このスクラップは2022/04/03にクローズされました