当前位置: 首页 > news >正文

OpenCV视觉分析之运动分析(5)背景减除类BackgroundSubtractorMOG2的使用

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

算法描述

基于高斯混合模型的背景/前景分割算法。

该类实现了在文献[320]和[319]中描述的高斯混合模型背景减除。

cv::BackgroundSubtractorMOG2 类是 OpenCV 中用于背景减除的一种实现方式,它基于 Gaussian Mixture Model with a recursive algorithm (GMM) 来估计背景模型。这种模型对于动态场景下的背景减除非常有效,因为它可以适应背景的变化并且对光照变化有一定的鲁棒性。

主要成员函数

函数apply()

计算一个前景掩码

函数原型

virtual void cv::BackgroundSubtractorMOG2::apply
(InputArray 	image,OutputArray 	fgmask,double 	learningRate = -1 
)		
参数
  • 参数image 下一个视频帧。浮点帧将不经缩放直接使用,且应处于[0,255]范围内。
  • 参数fgmask 作为8位二值图像的输出前景掩码。
  • 参数learningRate 取值范围在0到1之间,表示背景模型的学习速度。参数的负值会使算法使用某种自动选择的学习率。0意味着背景模型完全不更新,1意味着背景模型将完全重新初始化为最近一帧的状态。

代码示例


#include <iostream>
#include <opencv2/opencv.hpp>int main( int argc, char** argv )
{// 创建一个 BackgroundSubtractorMOG2 对象cv::Ptr< cv::BackgroundSubtractor > pBackSub = cv::createBackgroundSubtractorMOG2( 500,  // 设置历史帧数16,   // 设置方差阈值true  // 启用阴影检测);// 打开视频文件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;
}

运行结果

在这里插入图片描述
效果比BackgroundSubtractorKNN好很多

http://www.lryc.cn/news/468146.html

相关文章:

  • 【SAP Hana】X-DOC:数据仓库ETL如何抽取SAP中的CDS视图数据
  • WPF的UpdateSourceTrigger属性
  • 2024-09-25 环境变量,进程地址空间
  • 中国移动机器人将投入养老场景;华为与APUS共筑AI医疗多场景应用
  • 青少年编程能力等级测评CPA C++ 四级试卷(1)
  • 树上任意两点的距离
  • 【 thinkphp8 】00008 thinkphp8数据查询,常用table,name方法,进行数据查询汇总
  • Git的命令合集
  • 博客搭建之路:hexo搜索引擎收录
  • 创建Windows系统还原点
  • Linux等保测评需要用到的命令
  • PostgreSQL的学习心得和知识总结(一百五十六)|auto_explain — log execution plans of slow queries
  • 数据结构模板代码合集(不完整)
  • shell脚本语法详解
  • 2021亚洲机器学习会议:面向单阶段跨域检测的域自适应YOLO(ACML2021)
  • 面试题:描述在前端开发中,如何利用数据结构来优化页面渲染性能,并给出一个具体的示例。
  • 微积分复习笔记 Calculus Volume 1 - 3.2 he Derivative as a Function
  • html 轮播图效果
  • Android Room(SQLite) too many SQL variables异常
  • sentinel原理源码分析系列(八)-熔断
  • 安全见闻(4)——开阔眼界,不做井底之蛙
  • (二十二)、k8s 中的关键概念
  • python基础综合案例(数据可视化-地图可视化)
  • 基于SpringBoot足球场在线预约系统的设计与实现
  • 操作系统笔记(二)进程,系统调用,I/O设备
  • DevOps实践:在GitLab CI/CD中集成静态分析Helix QAC的工作原理与优势
  • 前端面试题-token的登录流程、JWT
  • 【软考高级架构】关于分布式数据库缓存redis的知识要点汇总
  • 构建自然灾害预警决策一体化平台,筑牢工程安全数字防线
  • 随机题两题