Python
OpenCV
RaspberryPi
gstreamer
cv2.VideoCapture

OpenCVはGStreamerパイプラインを直接受け入れてくれるが、注意必要

例えば、RPIからUbuntu等へ、GStreamerで画像をストリームで受けとり、UbuntuのOpenCVで処理したいとき、Pythonで、

RPI側で、例えば、

gst-launch-1.0 -v -e rpicamsrc preview=0 fullscreen=0 vflip=1 ! 'video/x-h264, width=640, height=480, framerate=30/1, profile=high' ! queue ! rtph264pay ! udpsink host=サーバのIPアドレス port=適当なポート番号X

としておき、

サーバー側で、

cmd = '-v udpsrc port=X caps="application/x-rtp,media=(string)video,encoding-name=(string)H264" ! rtph264depay ! avdec_h264 ! videoconvert ! appsink'

とかいうパイプラインと記述を準備しておき、それをそのままOpenCVのVideoCaptureメソッドに指定します。最後がappsinkです。つまり、

cap = cv2.VideoCapture(cmd)

これでサーバー側でストリームを受け取り、OpenCVで処理できます。

注意点: パイプラインの記述で、 ! の両側に空白がないと動きません。<- GSteamerの実装のBug。