我是openCv的新手,我试图从我的网络摄像头录制的视频中提取自己。到目前为止,我能够删除背景,而前景(我的视频)仍然以白色显示。我希望它与原始视频中的完全一样。以下是我目前的代码:
fgbg = cv2.createBackgroundSubtractorMOG2()
while(1):
ret, frame = cap.read()
fgmask = fgbg.apply(frame)
cv2.imshow('fgmask',frame)
cv2.imshow('frame',fgmask)
任何提示或某种方向感都会非常感激。
答案 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)