OpenCV删除保留前景的背景

时间:2017-12-14 10:20:08

标签: python opencv

我是openCv的新手,我试图从我的网络摄像头录制的视频中提取自己。到目前为止,我能够删除背景,而前景(我的视频)仍然以白色显示。我希望它与原始视频中的完全一样。以下是我目前的代码:

fgbg = cv2.createBackgroundSubtractorMOG2()

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

fgmask = fgbg.apply(frame)

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

任何提示或某种方向感都会非常感激。

1 个答案:

答案 0 :(得分:3)

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)