OpenCV中运动目标检测

一、介绍

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计算轮廓的周长。

三、总结

这次的实践浓缩了视频处理的完整操作:数据采集->背景建模->形态学过滤->特征提取->逻辑过滤->结果可视化

相关推荐
AI的探索之旅8 分钟前
97 个 OpenCV 实例(三十七):二维码识别,一张图四个码的陷阱
c++·opencv·计算机视觉
迪菲赫尔曼17 小时前
【基础篇 11】把官方源码放到服务器:版本、解压层级和安装位置,一次弄清楚
运维·服务器·开发语言·人工智能·python·yolo·目标检测
迪菲赫尔曼19 小时前
【基础篇 12】把环境与源码接起来:检查 GPU,再安装服务器上的项目
运维·服务器·开发语言·人工智能·python·yolo·目标检测
yyk3332421 小时前
YOLOv4算法
人工智能·yolo·目标跟踪
陈嘿萌1 天前
ACM MM 2026|告别密集交互!ProtoHGF-Net:基于原型超图的RGBT目标检测新范式
图像处理·人工智能·深度学习·目标检测·计算机视觉·学术研究与理论基础
pjj198541 天前
YOLO 目标检测算法系列梳理:从 V1 到 V5 的原理演进
算法·yolo·目标检测
微尘hjx1 天前
【ByteTrack 04】多轨迹算法ByteTrack改进点
算法·yolo·目标检测·目标跟踪·bytetrack·ultralytics·车跟踪
yyk333242 天前
YOLOv3算法
人工智能·yolo·目标跟踪
宿州派大星2 天前
目标检测:YOLOv1架构原理与损失函数全解析
人工智能·yolo·目标检测
荆棘鸟智能2 天前
河道采砂船识别与轨迹追踪怎么做?检测、跟踪与电子围栏实战思路
人工智能·算法·目标检测