2017-12-14 4 views
0

私はopenCvが新しく、私は自分のウェブカメラから得たビデオのバックグラウンドから自分自身を抽出しようとしています。これまでのところ、私は前景(私のビデオ)がまだ白で表示されている間、私は背景を削除することができます。元のビデオとまったく同じようにしたい。以下は私の現在のコードです:OpenCVはフォアグラウンドを保存しているバックグラウンドを削除します

fgbg = cv2.createBackgroundSubtractorMOG2() 

while(1): 
ret, frame = cap.read() 

fgmask = fgbg.apply(frame) 

cv2.imshow('fgmask',frame) 
cv2.imshow('frame',fgmask) 

どのようなヒントや方向感も高く評価されます。

答えて

2

fgmaskは、フォアグラウンドのホワイトマスクです。このマスクで元のフレームをマスクする必要があります。さて、フレームはRGBまたはおそらくBGR画像ですが、マスクは単一のチャンネルです(frame.shapeとfgmask.shapeを確認して確認できます)。したがって、あなたはRGBにマスクを変換した後、マスクを適用する必要があります。

mask_rgb = cv2.cvtColor(fgmask, cv2.COLOR_GRAY2RGB) 
out_frame = cv2.bitwise_and(frame, mask_rgb) 
cv2.imshow("FG", out_frame) 
+3

また 'それは基本的に最初の二つと同様の操作を行います' cv2.bitwise_and(フレーム、フレーム、マスク= fgmask)に短縮することができますライン。 – api55

関連する問題