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

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;
}

运行结果

在这里插入图片描述

相关文章:

  • 使用pdm管理python项目时去哪里找nuitka
  • LeetCode第191题_位1的个数
  • 如何通过复盘提升团队能力?
  • isNotBlank和isNotEmpty有什么区别?
  • privateGPT和RAGflow之间的区别
  • 5.7 react 路由
  • 通义读光系列文字检测+识别模型端到端OCR应用
  • 【Python 函数】
  • mathtype转化
  • P值、置信度与置信区间的关系:统计推断的三大支柱
  • 华泰商会未来规划——数字化、国际化、生态化
  • 关税风暴下的亚马逊卖家:在“抽象”生态中寻找破局之道
  • cursor配置mcp并使用
  • 从0开始学习大模型--Day03--Agent规划与记忆
  • 五、Hadoop集群部署:从零搭建三节点Hadoop环境(保姆级教程)
  • 什么是TCC?什么是二阶段提交?三阶段提交?
  • DeepSeek 入门:从注册到首轮对话全流程
  • 【深度学习-Day 7】精通Pandas:从Series、DataFrame入门到数据清洗实战
  • C语言——操作符
  • 快速上手SpringBoot开发指南
  • 阶跃星辰CEO姜大昕:追求智能上限仍是最重要的事,多模态的“GPT-4时刻”尚未到来
  • 上海“量子城市”先导应用场景落地曹杨社区,提供哪些服务?
  • 祝贺!苏翊鸣成功解锁“2160”
  • 昆明一学校门外小吃摊占满人行道,城管:会在重点时段加强巡查处置
  • 巴总理召开国家指挥当局紧急会议
  • 稳住外贸基本盘,这个中部大省出手了