opencv3/C++实现视频背景去除建模(BSM)


Posted in Python onDecember 11, 2019

视频背景建模主要使用到:

高斯混合模型(Mixture Of Gauss,MOG)

createBackgroundSubtractorMOG2(int history=500, double varThreshold=16,bool detectShadows=true);

K最近邻(k-NearestNeighbor,kNN)

createBackgroundSubtractorKNN(int history=500, double dist2Threshold=400.0, bool detectShadows=true);

history:history的长度。

varThreshold:像素和模型之间马氏距离的平方的阈值。

detectShadows:默认为true,检测阴影并标记它们(影子会被标记为灰色)。 会降低了部分速度。

实例:

#include<opencv2/opencv.hpp>
using namespace cv;

int main()
{
  VideoCapture capture;
  capture.open("E:/image/01.avi");
  if(!capture.isOpened())
  {
    printf("can not open video file  \n");
    return -1;
  }
  Mat frame;
  namedWindow("input", CV_WINDOW_AUTOSIZE);
  namedWindow("MOG2", CV_WINDOW_AUTOSIZE);
  namedWindow("KNN", CV_WINDOW_AUTOSIZE);
  Mat maskMOG2, maskKNN;
  Ptr<BackgroundSubtractor> pMOG2 = createBackgroundSubtractorMOG2(500,25,true);
  Ptr<BackgroundSubtractor> pKNN = createBackgroundSubtractorKNN();

  Mat kernel = getStructuringElement(MORPH_RECT, Size(5,5));
  while (capture.read(frame))
  {
    imshow("input", frame);

    pMOG2->apply(frame, maskMOG2);
    pKNN->apply(frame, maskKNN);
    //对处理后的帧进行开操作,减少视频中较小的波动造成的影响
    morphologyEx(maskMOG2,maskMOG2, MORPH_OPEN, kernel, Point(-1,-1));
    morphologyEx(maskKNN,maskKNN, MORPH_OPEN, kernel, Point(-1,-1));

    imshow("MOG2", maskMOG2);
    imshow("KNN", maskKNN);
    waitKey(3);
  }

  capture.release();
  return 0;

}

视频中移动的玻璃球:

opencv3/C++实现视频背景去除建模(BSM)

MOG分离出的小球区域:

opencv3/C++实现视频背景去除建模(BSM)

KNN分离出的小球区域:

opencv3/C++实现视频背景去除建模(BSM)

以上这篇opencv3/C++实现视频背景去除建模(BSM)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python 正则式 概述及常用字符
May 07 Python
跟老齐学Python之不要红头文件(2)
Sep 28 Python
python实现统计代码行数的方法
May 22 Python
Python读写配置文件的方法
Jun 03 Python
Python3之文件读写操作的实例讲解
Jan 23 Python
Django开发中复选框用法示例
Mar 20 Python
Python引用计数操作示例
Aug 23 Python
python3实现往mysql中插入datetime类型的数据
Mar 02 Python
Django框架配置mysql数据库实现过程
Apr 22 Python
用于ETL的Python数据转换工具详解
Jul 21 Python
Python中如何处理常见报错
Jan 18 Python
Python经常使用的一些内置函数
Apr 11 Python
opencv3/C++实现视频读取、视频写入
Dec 11 #Python
django框架两个使用模板实例
Dec 11 #Python
Python enumerate函数遍历数据对象组合过程解析
Dec 11 #Python
django框架基于queryset和双下划线的跨表查询操作详解
Dec 11 #Python
django框架ModelForm组件用法详解
Dec 11 #Python
django框架中ajax的使用及避开CSRF 验证的方式详解
Dec 11 #Python
通过实例解析Python调用json模块
Dec 11 #Python
You might like
destoon调用企业会员公司形象图片的实现方法
2014/08/21 PHP
PHP中加密解密函数与DES加密解密实例
2014/10/17 PHP
浅谈PHP中JSON数据操作
2015/07/01 PHP
自己写了一个展开和收起的多更能型的js效果
2013/03/05 Javascript
动态加载jquery库的方法
2014/02/12 Javascript
jquery 构造函数在表单提交过程中修改数据
2015/05/25 Javascript
简介AngularJS中使用factory和service的方法
2015/06/17 Javascript
JavaScript位移运算符(无符号) &gt;&gt;&gt; 三个大于号 的使用方法详解
2016/03/31 Javascript
jquery实现拖动效果
2016/08/10 Javascript
jquery datatable服务端分页
2016/08/31 Javascript
浅析javaScript中的浅拷贝和深拷贝
2017/02/15 Javascript
关于redux-saga中take使用方法详解
2018/02/27 Javascript
微信小程序设置滚动条过程详解
2019/07/25 Javascript
原生js实现移动小球(碰撞检测)
2020/12/17 Javascript
python下函数参数的传递(参数带星号的说明)
2010/09/19 Python
Python中的模块导入和读取键盘输入的方法
2015/10/16 Python
Python读大数据txt
2016/03/28 Python
Django卸载之后重新安装的方法
2017/03/15 Python
Python使用plotly绘制数据图表的方法
2017/07/18 Python
Python实现公历(阳历)转农历(阴历)的方法示例
2017/08/22 Python
python实现俄罗斯方块
2018/06/26 Python
python 实现提取某个索引中某个时间段的数据方法
2019/02/01 Python
python 实现GUI(图形用户界面)编程详解
2019/07/17 Python
python pygame实现球球大作战
2019/11/25 Python
python socket通信编程实现文件上传代码实例
2019/12/14 Python
安装多个版本的TensorFlow的方法步骤
2020/04/21 Python
解决Pytorch自定义层出现多Variable共享内存错误问题
2020/06/28 Python
使用PyCharm官方中文语言包汉化PyCharm
2020/11/18 Python
五个2015 年最佳HTML5 框架
2015/11/11 HTML / CSS
使用phonegap进行本地存储的实现方法
2017/03/31 HTML / CSS
交通安全演讲稿
2014/01/07 职场文书
单位领导证婚词
2014/01/14 职场文书
完美的中文自荐信
2014/05/24 职场文书
材料成型及控制工程专业求职信
2014/06/19 职场文书
安全生产工作汇报材料
2014/10/28 职场文书
唱歌比赛拉拉队口号
2015/12/25 职场文书