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

OpenCV 中用于背景分割(背景建模)的一个类cv::bgsegm::BackgroundSubtractorCNT

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

算法描述

cv::bgsegm::BackgroundSubtractorCNT 是 OpenCV 中用于背景分割(背景建模)的一个类,特别适用于实时应用。CNT 代表“快速且有效的背景减除算法(Fast and Efficient Background Subtraction Algorithm)”。该算法设计时考虑了效率和速度,使其非常适合需要处理大量视频数据或在资源受限的设备上运行的应用。

主要特点

  • 高效性:旨在提供更快的处理速度,同时保持合理的准确性。
  • 适应性:能够适应场景中的光照变化。
  • 内存使用优化:通过限制存储像素历史的最大数量来节省内存。
  • 简单易用:相对简单的接口,易于集成到不同的项目中。

构造函数

cv::bgsegm::BackgroundSubtractorCNT::BackgroundSubtractorCNT
(int minPixelStability=15, bool useHistory=true, int maxPixelStability=15*60, bool isParallel=true
);

参数:

  • minPixelStability: 像素被认为是稳定之前所需连续帧的数量。
  • useHistory: 是否使用历史信息。
  • maxPixelStability: 像素的最大稳定性值,超过此值后不再增加。
  • isParallel: 是否并行计算。

主要函数

apply函数

函数原型
void apply
(InputArray image, OutputArray fgmask, double learningRate=-1
);
参数
  • image: 输入当前帧。
  • fgmask: 输出前景掩码图像。
  • learningRate: 学习率,决定了新获取的信息对模型的影响速度。默认值 -1 表示自动选择学习率。

getBackgroundImage函数

函数原型
void getBackgroundImage
(OutputArray backgroundImage
) const;
参数
  • backgroundImage: 输出背景图像。

代码示例

#include <opencv2/bgsegm.hpp>
#include <opencv2/opencv.hpp>int main()
{cv::VideoCapture cap( 0 );  // 打开摄像头if ( !cap.isOpened() ){std::cerr << "无法打开摄像头!" << std::endl;return -1;}cv::Ptr< cv::bgsegm::BackgroundSubtractorCNT > bgSubtractor = cv::bgsegm::createBackgroundSubtractorCNT();cv::Mat frame, fgMask;while ( true ){cap >> frame;  // 获取新帧if ( frame.empty() )break;  // 到达视频结尾bgSubtractor->apply( frame, fgMask );  // 应用背景减除器cv::imshow( "Original Frame", frame );cv::imshow( "Foreground Mask", fgMask );if ( cv::waitKey( 30 ) >= 0 )break;  // 按任意键退出}return 0;
}

运行结果

在这里插入图片描述

http://www.xdnf.cn/news/4463.html

相关文章:

  • 【HarmonyOS 5】鸿蒙中常见的标题栏布局方案
  • Oracle 开窗函数
  • 高组装导轨的特点
  • Java中字符转数字的原理解析 - 为什么char x - ‘0‘能得到对应数字
  • 《Python星球日记》 第43天:机器学习概述与Scikit-learn入门
  • 旧版谷歌浏览器Chrome v116.0.5845.141下载
  • 38.机壳间接缝的处理
  • 27、移除元素
  • 加速页面加载的全流程优化策略
  • 日常知识点之随手问题整理(虚函数 虚函数表 继承的使用场景)
  • 【Linux 系统调试】Linux 调试工具strip使用方法
  • Kubernetes生产级资源管理实战:从QoS策略到OOM防御体系
  • C 语言网络编程问题:E1696 无法打开 源 文件 “sys/socket.h“
  • ubuntu安装Go SDK
  • linux 怎么把trex-core-2.65用 crosstool-ng-1.27.0/编译
  • chili调试笔记13 工程图模块 mesh渲染 mesh共享边显示实现
  • FlyEnv:优雅直观的跨平台开发环境管理工具
  • VUE+ElementUI 使用el-input类型type=“number” 时,取消右边的上下箭头
  • Nginx 搭建支持多版本和前端路由的静态网站
  • 高斯牛顿法 梯度下降法 LM算法的区别
  • 【ARM AMBA AHB 入门 3 -- AHB 总线介绍】
  • Postman中https和http的区别是什么?
  • Linux 下MySql主从数据库的环境搭建
  • 什么是回调 钩子 Hook机制 钩子函数 异步编程
  • 【Prometheus】业务指标与基础指标的标签来源差异及设计解析
  • 4大主流行业CRM需求精解:精准匹配业务痛点与选型策略
  • 数据结构与算法-单链表的应用
  • C语言学习之字符函数和字符串函数
  • 【Python】让Selenium 像Beautifulsoup一样,用解析HTML 结构的方式提取元素!
  • Spark 之 YarnCoarseGrainedExecutorBackend