LoginSignup
2
2

More than 3 years have passed since last update.

OpenCVのソースにMotion JPEGのストリーミングを利用する

Posted at

はじめに

庭に来る野鳥の監視カメラが作りたかったんですが、darknetで鳥検出を行う都合上、画像処理は屋内、カメラのみを屋外に置く必要がありました。
MJPEG-Streamerや、ESP32CAMなどを屋外に置き、屋内のPCでOpenCVなどを利用して画像処理を行う方法について記載しています。

やったこと

具体的には屋内のJetson Xavier NXでdarknetを動かして鳥検出を行っています。
この画像ソースとしてGStreamerのsouphttpsinkを利用して外部のMotionJpegのストリーミングを利用しました。
分かれば単純なんですが、これを見つけるまでが大変だったので、備忘録として。

GStreamer

GStreamerはオープンソースの画像処理のフレームワークです。

OpenCV

OpenCVの画像入力には、通常は
cv2.VideoCapture( SRC )
を用いて処理する画像を1フレームずつ取得します。
Jetson上では、SRCに数字を入れると、カメラを番号で指定してフレームを取得できます。
FILEPATHを指定することで動画ファイルをソースとすることができます。
ここのGStreamerのパイプラインを指定する文字列を指定することで、GStreamerで処理後の画像をソースとすることができます。

souphttpsrc

souphttpsrcはgstreamerのソースとしてHTTPサーバからストリーミングされたデータを利用します。

成果物

cv2.VideoCapture( "souphttpsrc location=http://192.168.1.39:8081/stream ! image/jpeg,width=800,height=600,framerate=1/1 ! queue ! jpegdec ! videoconvert ! appsink" )

http://192.168.1.39:8081/stream
がストリーミングのURLとなりますのでここを環境に合わせて変更してください。
当然ながらユーザインターフェースなしの動画部分のURLである必要があります。

2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2