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根据经纬度计算距离示例
Feb 16 Python
python的dict,set,list,tuple应用详解
Jul 24 Python
Python StringIO模块实现在内存缓冲区中读写数据
Apr 08 Python
Python嵌套列表转一维的方法(压平嵌套列表)
Jul 03 Python
python读取TXT每行,并存到LIST中的方法
Oct 26 Python
python找出完数的方法
Nov 12 Python
浅谈python3.x pool.map()方法的实质
Jan 16 Python
Python玩转Excel的读写改实例
Feb 22 Python
Python Selenium 之数据驱动测试的实现
Aug 01 Python
浅谈Python3实现两个矩形的交并比(IoU)
Jan 18 Python
python实现梯度下降和逻辑回归
Mar 24 Python
用python计算文件的MD5值
Dec 23 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
全国FM电台频率大全 - 8 黑龙江省
2020/03/11 无线电
用Socket发送电子邮件
2006/10/09 PHP
php的一个简单加密解密代码
2014/01/14 PHP
php实现微信企业号支付个人的方法详解
2017/07/26 PHP
prototype Element学习笔记(篇一)
2008/10/26 Javascript
function foo的原型与prototype属性解惑
2010/11/19 Javascript
JQuery学习笔录 简单的JQuery
2012/04/09 Javascript
点击显示指定元素隐藏其他同辈元素的方法
2014/02/19 Javascript
javascript的函数作用域
2014/11/12 Javascript
Javascript前端UI框架Kit使用指南之kitjs事件管理
2014/11/28 Javascript
jQuery中:eq()选择器用法实例
2014/12/29 Javascript
详细解读JavaScript编程中的Promise使用
2015/07/27 Javascript
图解js图片轮播效果
2015/12/20 Javascript
Vue.js动态组件解析
2016/09/09 Javascript
JavaScript中EventLoop介绍
2018/01/22 Javascript
vue监听input标签的value值方法
2018/08/27 Javascript
从零开始用electron手撸一个截屏工具的示例代码
2018/10/10 Javascript
微信小程序MUI导航栏透明渐变功能示例(通过改变opacity实现)
2019/01/24 Javascript
详解vue-video-player使用心得(兼容m3u8)
2019/08/23 Javascript
JS+JQuery实现无缝连接轮播图
2020/12/30 jQuery
python抓取京东商城手机列表url实例代码
2013/12/18 Python
Python深入学习之上下文管理器
2014/08/31 Python
Python判断文件和文件夹是否存在的方法
2015/05/21 Python
Python开发的实用计算器完整实例
2017/05/10 Python
DJANGO-URL反向解析REVERSE实例讲解
2019/10/25 Python
Tensorflow分批量读取数据教程
2020/02/07 Python
python检查目录文件权限并修改目录文件权限的操作
2020/03/11 Python
python利用pytesseract 实现本地识别图片文字
2020/12/14 Python
python字典按照value排序方法
2020/12/28 Python
css3.0 图形构成实例练习二
2013/03/19 HTML / CSS
斯洛伐克最大的婴儿食品和用品网上商店:Feedo.sk
2020/12/21 全球购物
经贸专业毕业生求职信
2014/03/23 职场文书
个人向公司借款协议书
2014/10/09 职场文书
高一军训决心书
2015/02/05 职场文书
Django中的JWT身份验证的实现
2021/05/07 Python
OpenCV绘制圆端矩形的示例代码
2021/08/30 Python