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网络编程之读取网站根目录实例
Sep 30 Python
Python快速从注释生成文档的方法
Dec 26 Python
TF-IDF与余弦相似性的应用(二) 找出相似文章
Dec 21 Python
Tensorflow实现AlexNet卷积神经网络及运算时间评测
May 24 Python
Python判断中文字符串是否相等的实例
Jul 06 Python
pyside+pyqt实现鼠标右键菜单功能
Dec 08 Python
python flask框架实现重定向功能示例
Jul 02 Python
Python3 解决读取中文文件txt编码的问题
Dec 20 Python
python 实现任务管理清单案例
Apr 25 Python
Python如何在循环内使用list.remove()
Jun 01 Python
只用Python就可以制作的简单词云
Jun 07 Python
Python 处理表格进行成绩排序的操作代码
Jul 26 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获取文件大小的方法
2014/02/26 PHP
最新版本PHP 7 vs HHVM 多角度比较
2016/02/14 PHP
一个非常实用的php文件上传类
2017/07/04 PHP
PHP实现执行外部程序的方法详解
2017/08/17 PHP
php常用经典函数集锦【数组、字符串、栈、队列、排序等】
2019/08/23 PHP
PHP实现简单的计算器
2020/08/28 PHP
Javascript 获取链接(url)参数的方法[正则与截取字符串]
2010/02/09 Javascript
js/ajax跨越访问-jsonp的原理和实例(javascript和jquery实现代码)
2012/12/27 Javascript
深入分析jquery解析json数据
2014/12/09 Javascript
JavaScript将字符串转换为整数的方法
2015/04/14 Javascript
jQuery焦点图轮播特效代码分享(3款)
2015/09/05 Javascript
javascript和jquery实现用户登录验证
2016/05/04 Javascript
JavaScript实现简单的弹窗效果
2020/05/19 Javascript
python中lambda与def用法对比实例分析
2015/04/30 Python
Python学习教程之常用的内置函数大全
2017/07/14 Python
对Python3中的input函数详解
2018/04/22 Python
对pandas replace函数的使用方法小结
2018/05/18 Python
基于python实现自动化办公学习笔记(CSV、word、Excel、PPT)
2019/08/06 Python
python+OpenCV实现车牌号码识别
2019/11/08 Python
Tensorflow 实现将图像与标签数据转化为tfRecord文件
2020/02/17 Python
自定义Django Form中choicefield下拉菜单选取数据库内容实例
2020/03/13 Python
python exit出错原因整理
2020/08/31 Python
Python实现像awk一样分割字符串
2020/09/15 Python
CSS3中的clip-path使用攻略
2015/08/03 HTML / CSS
非常震撼的纯CSS3人物行走动画
2016/02/24 HTML / CSS
柯基袜:Corgi Socks
2017/01/26 全球购物
ProBikeKit新西兰:自行车套件,跑步和铁人三项装备
2017/04/05 全球购物
Ben Sherman官方网站:英国男装品牌
2019/10/22 全球购物
Aosom西班牙:家具在线商店
2020/06/11 全球购物
物流专业大学生求职信范文
2013/10/28 职场文书
写好自荐信的技巧
2013/11/08 职场文书
2016年“世界气象日”广播稿
2015/12/17 职场文书
导游词之茶卡盐湖
2019/11/26 职场文书
Ajax实现局部刷新的方法实例
2021/03/31 Javascript
JavaWeb Servlet实现网页登录功能
2021/07/04 Java/Android
springboot+zookeeper实现分布式锁
2022/03/21 Java/Android