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中用sleep()方法操作时间的教程
May 22 Python
用Python的Flask框架结合MySQL写一个内存监控程序
Nov 07 Python
利用Python中SocketServer 实现客户端与服务器间非阻塞通信
Dec 15 Python
Python实用技巧之列表、字典、集合中根据条件筛选数据详解
Jul 11 Python
python3实现名片管理系统
Nov 29 Python
WxPython建立批量录入框窗口
Feb 27 Python
python操作日志的封装方法(两种方法)
May 23 Python
Python对Excel按列值筛选并拆分表格到多个文件的代码
Nov 05 Python
python re模块匹配贪婪和非贪婪模式详解
Feb 11 Python
python opencv实现图片缺陷检测(讲解直方图以及相关系数对比法)
Apr 07 Python
使用Keras预训练模型ResNet50进行图像分类方式
May 23 Python
Python 串口通信的实现
Sep 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
收听短波不可能有声音清晰的品质吗
2021/03/01 无线电
JS target与currentTarget区别说明
2011/08/28 Javascript
页面加载完毕后滚动条自动滚动一定位置
2014/02/20 Javascript
上传图片预览JS脚本 Input file图片预览的实现示例
2014/10/23 Javascript
JavaScript数据类型检测代码分享
2015/01/26 Javascript
JS实现简易图片轮播效果的方法
2015/03/25 Javascript
JavaScript中的getTimezoneOffset()方法使用详解
2015/06/10 Javascript
JS实现淡蓝色简洁竖向Tab点击切换效果
2015/10/06 Javascript
跟我学习javascript的闭包
2015/11/16 Javascript
JS添加或修改控件的样式(Class)实现方法
2016/10/15 Javascript
vue component组件使用方法详解
2017/07/14 Javascript
详解webpack的proxyTable无效的解决方案
2018/06/15 Javascript
node.js中TCP Socket多进程间的消息推送示例详解
2018/07/10 Javascript
基于Python如何使用AIML搭建聊天机器人
2016/01/27 Python
python实现xlsx文件分析详解
2018/01/02 Python
python3获取两个日期之间所有日期,以及比较大小的实例
2018/04/08 Python
Python实现一个数组除以一个数的例子
2019/07/20 Python
python实现文字版扫雷
2020/04/24 Python
Python之变量类型和if判断方式
2020/05/05 Python
Python内置函数property()如何使用
2020/09/01 Python
Html5元素及基本语法详解
2016/08/02 HTML / CSS
HTML5的postMessage的使用手册
2018/12/19 HTML / CSS
Rakuten Kobo台湾:电子书、eReaders和Reading应用程式
2017/11/24 全球购物
什么是数据抽象
2016/11/26 面试题
UDP协议功能
2013/01/06 面试题
一些网络技术方面的面试题
2014/05/01 面试题
小学生学习感言
2014/03/10 职场文书
篮球赛口号
2014/06/18 职场文书
2014年全国爱牙日宣传活动方案
2014/09/21 职场文书
部队反四风对照检查材料
2014/09/26 职场文书
运动会铅球比赛加油稿
2014/09/26 职场文书
县委常委班子专题民主生活会查摆问题及整改措施
2014/09/27 职场文书
小班上学期个人总结
2015/02/12 职场文书
家装业务员岗位职责
2015/04/03 职场文书
使用CSS3实现按钮悬停闪烁动态特效代码
2021/08/30 HTML / CSS
Python音乐爬虫完美绕过反爬
2021/08/30 Python