createBackgroundSubtractorMOG()
history:缓冲,表示多少毫秒,可不指定参数,用默认的即可;
具体实现原理比较复杂,用到了一些视频序列关联信息,把像素值不变的认为是背景;
注意:在opencv中已经不支持该函数,而是用createBackgroundSubtractorMOG2()替代;如果需要使用可以安装opencv_contrib模块,在其中的bgsegm中保留了该函数;
API使用默认参数即可,调整比较多的是history,
在视频中,以时间轴为顺序。如果像素在整个时间轴内不发生变化,则认为是背景,如果发生变化且很频繁,则认为是前景。
去除背景参考论文:
An Improved Adaptive Background Mixture Model for Real-time Tracking with Shadow Detection
在去除背景之前去噪:首先将原始图像进行灰度化,然后经过高斯滤波进行去噪
import cv2
import numpy as np
cap = cv2.VideoCapture('E:\\video.mp4') #加载视频
bgsubmog = cv2.createBackgroundSubtractorMOG2()
test = cv2.createBackgroundSubtractorMOG2() #测试未经过高斯去噪的图像效果