2016-11-11 4 views
-2

私はビデオから入力を受けています。最初の5フレームの中央値を取って、それを基準として動き検出の背景画像として使用したいと思います。5グレイスケールのフレームのメジアンはどのように取るのですか?

また、動きが検出されず、バックグラウンドをもう一度計算し、そうでない場合はt秒待機するような時間条件を使用します。私はopencvの新人です。どうすればいいのか分かりません。どうぞよろしくお願いします。

また、私は1fpsでビデオを撮りたいと思っていますが、これはうまくいきません。ここでは、コード私が持っている:

import cv2 

BLUR_SIZE = 3 
NOISE_CUTOFF = 12 

cam = cv2.VideoCapture('gh10fps.mp4') 
cam.set(3, 640) 
cam.set(4, 480) 

cam.set(cv2.cv.CV_CAP_PROP_FPS, 1) 
fps=cam.get(cv2.cv.CV_CAP_PROP_FPS) 
print "Current FPS: ",fps 
+0

「コード」をお寄せいただきありがとうございます。実際に何を試しましたか? – Julien

+0

OpenCVにはバックグラウンド減算アルゴリズムが組み込まれていることをご存知ですか?また、優れたバックグラウンド減算ライブラリがあります。 https://github.com/andrewssobral/bgslibrary –

+0

@Georg Sir、このライブラリをPythonでどうやって使うのですか?このライブラリはcpp用です。 – sks

答えて

1

あなたが本当に最初の5つのフレームの中央値をしたい場合は、あなたが探しているものを行う必要があり、次の

import numpy as np 
import cv2 

cap = cv2.VideoCapture(0) 
frames = [] 

for _ in range(5): 
    ret, frame = cap.read() 
    gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY) 
    frames.append(gray) 

median = np.median(frames, axis=0).astype(dtype=np.uint8)  
cv2.imshow('frame', median) 
cv2.waitKey(0) 

cap.release() 
cv2.destroyAllWindows() 

注、これは単に取っていますウェブカメラのソースを例にして説明します。

関連する問題