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的id()函数解密过程
Dec 25 Python
python自动化测试之连接几组测试包实例
Sep 28 Python
python实现微信自动回复功能
Apr 11 Python
python实战教程之自动扫雷
Jul 13 Python
78行Python代码实现现微信撤回消息功能
Jul 26 Python
python2.7使用plotly绘制本地散点图和折线图
Apr 02 Python
使用Python opencv实现视频与图片的相互转换
Jul 08 Python
Python 类,property属性(简化属性的操作),@property,property()用法示例
Oct 12 Python
python 采用paramiko 远程执行命令及报错解决
Oct 21 Python
浅谈keras的深度模型训练过程及结果记录方式
Jan 24 Python
tensorflow获取预训练模型某层参数并赋值到当前网络指定层方式
Jan 24 Python
TensorFlow2.X结合OpenCV 实现手势识别功能
Apr 08 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根据某字段对多维数组进行排序的方法
2015/03/07 PHP
PHP如何通过AJAX方式实现登录功能
2015/11/23 PHP
WordPress中获取所使用的模板的页面ID的简单方法
2015/12/31 PHP
thinkPHP简单实现多个子查询语句的方法
2016/12/05 PHP
windows下的WAMP环境搭建图文教程(推荐)
2017/07/27 PHP
laravel实现上传图片的两种方式小结
2019/10/12 PHP
图片完美缩放
2006/09/07 Javascript
jquery 定位input元素的几种方法小结
2013/07/28 Javascript
JS访问SWF的函数用法实例
2015/07/01 Javascript
js实现简单排列组合的方法
2016/01/27 Javascript
基于socket.io+express实现多房间聊天
2016/03/17 Javascript
JS简单获取当前日期时间的方法(如:2017-03-29 11:41:10 星期四)
2017/03/29 Javascript
Angular.JS通过指令操作DOM的方法
2017/05/10 Javascript
angularjs 的数据绑定实现原理
2018/07/02 Javascript
vue项目打包后怎样优雅的解决跨域
2019/05/26 Javascript
JQuery 实现文件下载的常用方法分析
2019/10/29 jQuery
JS插入排序简单理解与实现方法分析
2019/11/25 Javascript
Python类定义和类继承详解
2015/05/08 Python
Python利用Nagios增加微信报警通知的功能
2016/02/18 Python
Python金融数据可视化汇总
2017/11/17 Python
pandas Dataframe行列读取的实例
2018/06/08 Python
Face++ API实现手势识别系统设计
2018/11/21 Python
Python2.7版os.path.isdir中文路径返回false的解决方法
2019/06/21 Python
Python对接支付宝支付自实现功能
2019/10/10 Python
新年福利来一波之Python轻松集齐五福(demo)
2020/01/20 Python
如何基于python把文字图片写入word文档
2020/07/31 Python
Python 代码调试技巧示例代码
2020/08/11 Python
解决pycharm不能自动保存在远程linux中的问题
2021/02/06 Python
css3 border-radius属性详解
2017/07/05 HTML / CSS
美国美发品牌:Bumble and Bumble
2016/10/08 全球购物
凯普林包包西班牙官网:Kipling西班牙
2019/04/12 全球购物
汽车维修专业毕业生的求职信分享
2013/12/04 职场文书
《蝙蝠和雷达》教学反思
2014/04/23 职场文书
教师作风整顿个人剖析材料
2014/10/10 职场文书
Redis 操作多个数据库的配置的方法实现
2022/03/23 Redis
Node.js实现爬取网站图片的示例代码
2022/04/04 NodeJs