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自动登录126邮箱的方法
Jul 10 Python
python实现unicode转中文及转换默认编码的方法
Apr 29 Python
python模块smtplib实现纯文本邮件发送功能
May 22 Python
Python如何发布程序的详细教程
Oct 09 Python
python 函数内部修改外部变量的方法
Dec 18 Python
详解Python数据分析--Pandas知识点
Mar 23 Python
如何用C代码给Python写扩展库(Cython)
May 17 Python
python中append实例用法总结
Jul 30 Python
关于Python3 类方法、静态方法新解
Aug 30 Python
Python稀疏矩阵及参数保存代码实现
Apr 18 Python
Python3自动生成MySQL数据字典的markdown文本的实现
May 07 Python
python中判断数字是否为质数的实例讲解
Dec 06 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
需要使用php模板的朋友必看的很多个顶级PHP模板引擎比较分析
2008/05/26 PHP
详解php用curl调用接口方法,get和post两种方式
2017/01/13 PHP
php生成条形码的图片的实例详解
2017/09/13 PHP
PHP依赖注入原理与用法分析
2018/08/21 PHP
php判断电子邮件是否正确方法
2018/12/04 PHP
Jquery插件之多图片异步上传
2010/10/20 Javascript
JS删除数组元素的函数介绍
2013/03/27 Javascript
Javascript的时间戳和php的时间戳转换注意事项
2013/04/12 Javascript
完美解决IE低版本不支持call与apply的问题
2013/12/05 Javascript
javascript获取flash版本号的方法
2014/11/20 Javascript
用JS动态改变表单form里的action值属性的两种方法
2016/05/25 Javascript
基于jQuery的ajax方法封装
2016/07/14 Javascript
学习Node.js模块机制
2016/10/17 Javascript
jquery实现input框获取焦点的方法
2017/02/06 Javascript
Vue-router结合transition实现app前进后退动画切换效果的实例
2017/10/11 Javascript
深入理解JavaScript的值传递和引用传递
2018/10/24 Javascript
Vant 在vue-cli 4.x中按需加载操作
2020/11/05 Javascript
Python的几个高级语法概念浅析(lambda表达式闭包装饰器)
2016/05/28 Python
python检查URL是否正常访问的小技巧
2017/02/25 Python
Python解决抛小球问题 求小球下落经历的距离之和示例
2018/02/01 Python
解决PySide+Python子线程更新UI线程的问题
2019/01/11 Python
Django中使用Whoosh进行全文检索的方法
2019/03/31 Python
使用django实现一个代码发布系统
2019/07/18 Python
修改Pandas的行或列的名字(重命名)
2019/12/18 Python
关于Kotlin中SAM转换的那些事
2020/09/15 Python
python从ftp获取文件并下载到本地
2020/12/05 Python
python脚本定时发送邮件
2020/12/22 Python
CSS3中设置3D变形的transform-style属性详解
2016/05/23 HTML / CSS
一份Java笔试题
2012/02/21 面试题
七年级历史教学反思
2014/02/05 职场文书
群众路线教育实践活动心得体会
2014/03/07 职场文书
群众路线教育实践活动自我剖析思想汇报
2014/10/04 职场文书
房屋租赁委托书范本
2014/10/04 职场文书
学校政风行风自查自纠报告
2014/10/21 职场文书
最新的离婚协议书范本!
2019/07/02 职场文书
css3 实现文字闪烁效果的三种方式示例代码
2021/04/25 HTML / CSS