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将多个文本文件合并为一个文本的代码(便于搜索)
Mar 13 Python
python实现在windows下操作word的方法
Apr 28 Python
python批量修改文件编码格式的方法
May 31 Python
python求解数组中两个字符串的最小距离
Sep 27 Python
Python模拟浏览器上传文件脚本的方法(Multipart/form-data格式)
Oct 22 Python
对python3 Serial 串口助手的接收读取数据方法详解
Jun 12 Python
python Pandas库基础分析之时间序列的处理详解
Jul 13 Python
python matplotlib饼状图参数及用法解析
Nov 04 Python
pyinstaller打包程序exe踩过的坑
Nov 19 Python
浅谈keras中loss与val_loss的关系
Jun 22 Python
Python+OpenCV图像处理——图像二值化的实现
Oct 24 Python
django上传文件的三种方式
Apr 29 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 setcookie() cannot modify header information 的解决方法
2009/01/09 PHP
ThinkPHP实现一键清除缓存方法
2014/06/26 PHP
Jquery中增加参数与Json转换代码
2009/11/20 Javascript
javascript 面向对象全新理练之继承与多态
2009/12/03 Javascript
Jquery插件之打造自定义的select标签
2011/11/30 Javascript
在子窗口中关闭父窗口的一句代码
2013/10/21 Javascript
Android中的jQuery:AQuery简介
2014/05/06 Javascript
解决自定义$(id)的方法与jquery选择器$冲突的问题
2014/06/14 Javascript
jQuery oLoader实现的加载图片和页面效果
2015/03/14 Javascript
纯css下拉菜单 无需js
2016/08/15 Javascript
JavaScript使用正则表达式获取全部分组内容的方法示例
2017/01/17 Javascript
JS简单实现数组去重的方法分析
2017/10/14 Javascript
Vue 2.0学习笔记之使用$refs访问Vue中的DOM
2017/12/19 Javascript
Vue源码解析之Template转化为AST的实现方法
2018/12/14 Javascript
nodejs微信开发之接入指南
2019/03/17 NodeJs
vue.js实现数据库的JSON数据输出渲染到html页面功能示例
2019/08/03 Javascript
在vue项目中 实现定义全局变量 全局函数操作
2020/10/26 Javascript
解决vant-UI库修改样式无效的问题
2020/11/03 Javascript
[52:08]DOTA2上海特级锦标赛主赛事日 - 3 败者组第三轮#2Fnatic VS OG第一局
2016/03/05 DOTA
[15:20]DOTA2-DPC中国联赛 正赛 Elephant vs Aster 选手采访
2021/03/11 DOTA
Python+OpenCV感兴趣区域ROI提取方法
2019/01/10 Python
Python Selenium 之关闭窗口close与quit的方法
2019/02/13 Python
python字符串替换第一个字符串的方法
2019/06/26 Python
Python 列表去重去除空字符的例子
2019/07/20 Python
小 200 行 Python 代码制作一个换脸程序
2020/05/12 Python
如何完美的建立一个python项目
2020/10/09 Python
美国班级戒指、帽子和礼服、毕业产品、年鉴:Balfour
2018/11/01 全球购物
如何将字串String转换成整数int
2015/02/21 面试题
Java和Javasciprt的区别
2012/09/02 面试题
软件测试工程师笔试题带答案
2015/03/27 面试题
计算机大学生的自我评价
2013/10/15 职场文书
应聘护理专业毕业自荐书范文
2014/02/12 职场文书
构建和谐校园倡议书
2015/01/19 职场文书
幸福来敲门观后感
2015/06/04 职场文书
小学入学感言
2015/08/01 职场文书
类和原型的设计模式之复制与委托差异
2022/07/07 Javascript