python

关注公众号 jb51net

关闭
首页 > 脚本专栏 > python > OpenCV运动目标检测

OpenCV中运动目标检测及核心代码总结

作者:yyk33324

OpenCV是一个开源的计算机视觉和机器学习软件库,这篇文章主要介绍了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计算轮廓的周长。

三、总结

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

到此这篇关于OpenCV中运动目标检测及核心代码的文章就介绍到这了,更多相关OpenCV运动目标检测内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:
阅读全文