cv2.BackgroundSubtractorMOG2输出叠加了初始帧的视频

时间:2016-06-06 10:29:24

标签: python opencv

如何使用cv2.BackgroundSubtractorMOG2叠加初始帧输出视频?

这是我的代码:

import cv2
import numpy as np
cap  = cv2.VideoCapture(0)
fgbg = cv2.BackgroundSubtractorMOG2()    
fourcc = cv2.cv.CV_FOURCC(*'XVID')
out = cv2.VideoWriter('output.avi',fourcc, 20.0, (640,480), isColor = False)
while(cap.isOpened()):
    ret, frame = cap.read()
    if ret == True:
        fgmask = fgbg.apply(frame)
        cv2.imshow('original', frame)
        cv2.imshow('fg', fgmask)
        out.write(fgmask)
        k = cv2.waitKey(30) & 0xFF
        if k == 27:
            break
    else:
        break
cap.release()
out.release()
cv2.destroyAllWindows()

这就是我得到的:

1 个答案:

答案 0 :(得分:0)

您可以使用cv2.addWeighted功能来实现叠加效果

然而,请注意,MOG背景减法器不断更新它的想法"通过apply函数添加新帧的背景(这就是为什么它最终会删除最初在fg掩码中但已经静止太长时间的对象的原因),因此叠加的"初始帧"可能会误导你自己。

如果你想看到fg蒙版的效果,你可能最好叠加前一帧/帧而不是初始帧