OpenCV视觉分析之运动分析背景减除类BackgroundSubtractor的使用

  • 操作系统:ubuntu22.04
  • OpenCV版本:OpenCV4.9
  • IDE:Visual Studio Code
  • 编程语言:C++11

算法描述

背景/前景分割的基类:

这个类仅用于定义整个背景/前景分割算法家族的共同接口

cv::BackgroundSubtractor 是 OpenCV 中用于背景减除的基类。它定义了一个接口,用于实现各种背景减除算法。这个基类包含了所有背景减除算法共同的操作,如初始化、处理帧以获得前景掩码、更新背景模型等。

背景减除(Background Subtraction)是一种用于视频分析的技术,主要用于检测和分割前景物体(即移动物体),以从连续的视频帧中分离出背景部分。这种方法基于一个假设:视频中的大部分区域在大多数时间内是相对静止的,这些区域被视为背景;而前景则是相对于背景发生移动的对象。

成员函数apply()

计算一个前景掩码。

函数原型

cpp 复制代码
virtual void cv::BackgroundSubtractor::apply	
(
	InputArray 	image,
	OutputArray 	fgmask,
	double 	learningRate = -1 
)		

参数

  • 参数image 下一个视频帧。
  • 参数fgmask 输出的前景掩码,作为一个8位的二值图像。
  • 参数learningRate 一个介于0和1之间的值,表示背景模型的学习速度。负参数值使算法使用某种自动选择的学习率。0意味着背景模型完全不更新,1意味着背景模型完全从最后一帧重新初始化

代码示例

cpp 复制代码
#include <iostream>
#include <opencv2/opencv.hpp>

int main( int argc, char** argv )
{
    // 创建一个背景减除器实例
    cv::Ptr< cv::BackgroundSubtractor > pBackSub = cv::createBackgroundSubtractorMOG2();

    // 设置参数
    
    // 打开视频文件
    cv::VideoCapture capture( 0 );
    if ( !capture.isOpened() )
    {
        std::cerr << "Failed to open video file." << std::endl;
        return -1;
    }

    // 读取每一帧并处理
    cv::Mat frame, fgMask;
    while ( capture.read( frame ) )
    {
        // 应用背景减除
        pBackSub->apply( frame, fgMask );

        // 显示结果
        cv::imshow( "Frame", frame );
        cv::imshow( "FG Mask", fgMask );

        // 按 'q' 键退出
        if ( cv::waitKey( 30 ) == 'q' )
        {
            break;
        }
    }

    // 释放资源
    capture.release();
    cv::destroyAllWindows();

    return 0;
}

运行结果

视频中那个玉竹是在摆动的状态

相关推荐
国科安芯15 分钟前
四重证据,一条逻辑链:商业航天级微控制器MCU抗辐射验证方法学综述——以国科安芯AS32S601为例
人工智能·单片机·嵌入式硬件·mcu·安全·抗辐射
dk_tjy26 分钟前
AI驱动的自动化攻击背景下:企业端点安全体系的技术架构与建设路径
网络·人工智能·安全·自动化·终端安全管理·数据防泄漏
布吉岛的石头1 小时前
Java 程序员第 50 阶段2:预训练的目标函数:自回归语言建模本质
java·开发语言·人工智能·深度学习·回归·transformer
2601_965454231 小时前
用AI把开源项目功能清单做成MG动画介绍视频
人工智能·开源·音视频
风雅GW1 小时前
局域网访问为何少一半配置页:DSH 的安全边界设计复盘
人工智能
衡石科技1 小时前
同一句业务问题,怎样持续问对数?衡石 ChatBI 的语义准备与回归验证
人工智能·数据挖掘·回归·chatbi
新新学长搞科研1 小时前
【会议征稿 | 杭州站】第七届机器学习与计算机应用国际学术会议 (ICMLCA 2026)
人工智能·机器学习·计算机
找方案1 小时前
从用户画像到智能定价:81页方案拆解“大数据决策与支撑平台”怎么落地
大数据·人工智能·数据分析·智慧城市·用户画像
紧跟先前的步伐2 小时前
Go AI Agent 实战 05|Temperature 与生成参数:让模型输出可控
java·人工智能·golang
一只爱撸猫的程序猿2 小时前
我让 Agent 干活,自己只做审核:一个真实项目的六次"人审拦截"
人工智能