一、介绍
1.1运动目标检测
运动目标检测指在视频序列中提取出运动的物体区域。本次实践采用了背景减除法,建立背景模型,当前帧与背景相减得到前景。
二、核心代码讲解
1.核心对象创建

VideoCapture:加载视频文件。
getStructuringElement:创建一个3*3的十字形结构元素。这个矩阵专门用于后续的形态学操作(腐蚀与膨胀)。它在保留物体形状的同时,对于对角线方向的噪声抑制效果较好。
createBackgroundSubtractorMOG2:这是混合高斯模型,MOG2算法为每个像素建立多个高斯分布模型,用来模拟背景。它能自适应光照变化。
2.一帧一帧低处理

ret为False表示视频播放完毕,直接跳出循环。
3.应用MOG2提取前景和去噪声

apply()方法接收当前帧,输出一张单通道的二值图像。其中白色(255)为运动的物体,黑色(0)为背景,灰色被算法判定为阴影。
此时的fgmask会有很多细小的白色噪点,甚至会有空洞,直接拿去用效果很差。
MORPH_OPEN为开运算:先腐蚀后膨胀,先消除白色区域边缘的细小噪声,让物体的边界向内收缩;再将腐蚀后剩余的物体轮廓涨回来,恢复原本的大小,同时填补物体内部细小的黑洞。
4.轮廓的查找和周长过滤

RETR_EXTERNAL:只检测最外层的轮廓,忽略内部嵌套的轮廓;
CHAIN_APPROX_SIMOLE:压缩轮廓点,只保留拐点,极大节省内存;
cv2.arcLength计算轮廓的周长。
三、总结
这次的实践浓缩了视频处理的完整操作:数据采集->背景建模->形态学过滤->特征提取->逻辑过滤->结果可视化