2013-07-31 19 views
7

最近ラズベリーパイカメラをセットアップし、RTSPでフレームをストリーミングしています。完全には必要ではないかもしれませんが、私はビデオをブロードキャストするコマンドを以下に示します:RTSPストリームのフレームをPythonで読む

raspivid -o - -t 0 -w 1280 -h 800 |cvlc -vvv stream:///dev/stdin --sout '#rtp{sdp=rtsp://:8554/output.h264}' :demux=h264 

ビデオを完全にストリームします。

私が今やりたいことは、このストリームをPythonで解析し、各フレームを個別に読み込むことです。私は、監視の目的で動き検出をしたいと思っています。

私はこの作業をどこから始めるのか完全に迷っています。誰でも私に良いチュートリアルを教えてもらえますか?これがPythonでは達成できない場合、これを達成するためにどのようなツール/言語を使用できますか?

+0

はここを見て:http://superuser.com/questions/225367/i-need-motion-detection-on-a-rtsp-stream ...でもVLCはそれを行うことができるようです。.. – hek2mgl

答えて

7

ビットが、あなたはVLC python bindingsを使用してストリームを再生することができます

player=vlc.MediaPlayer('rtsp://:8554/output.h264') 
player.play() 

がそのように毎秒またはスナップショット取る:

while 1: 
    time.sleep(1) 
    player.video_take_snapshot(0, '.snapshot.tmp.png', 0, 0) 

をそしてあなたはSimpleCVを使用することができます(処理ライブラリに画像ファイル'.snapshot.tmp.png'をロードするだけです)。

+0

'.snapshot.tmp.png'ファイルはどのように使用できますか? –

+0

@ ShaiM。他のPNGファイルと同じ方法で使用することができます – Samadi

+0

ubuntuサーバーでも使用できますか?おそらくライブラリをインストールする場合は –

0

こんにちは、pythonとOpenCVを使用してビデオからフレームを読むことができます。以下はサンプルコードです。 pythonとopencv2バージョンでうまく動作します。

import cv2 
import os 
#Below code will capture the video frames and will sve it a folder (in current working directory) 

dirname = 'myfolder' 
#video path 
cap = cv2.VideoCapture("TestVideo.mp4") 
count = 0 
while(cap.isOpened()): 
    ret, frame = cap.read() 
    if not ret: 
     break 
    else: 
     cv2.imshow('frame', frame) 
     #The received "frame" will be saved. Or you can manipulate "frame" as per your needs. 
     name = "rec_frame"+str(count)+".jpg" 
     cv2.imwrite(os.path.join(dirname,name), frame) 
     count += 1 
    if cv2.waitKey(20) & 0xFF == ord('q'): 
     break 
cap.release() 
cv2.destroyAllWindows() 
関連する問題