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系列之数据处理编程实例(一)
May 22 Python
python中lambda函数 list comprehension 和 zip函数使用指南
Sep 28 Python
python基于BeautifulSoup实现抓取网页指定内容的方法
Jul 09 Python
基python实现多线程网页爬虫
Sep 06 Python
python 通过 socket 发送文件的实例代码
Aug 14 Python
python单线程下实现多个socket并发过程详解
Jul 27 Python
Python的条件锁与事件共享详解
Sep 12 Python
Elasticsearch py客户端库安装及使用方法解析
Sep 14 Python
解决python 执行shell命令无法获取返回值的问题
Dec 05 Python
Alpine安装Python3依赖出现的问题及解决方法
Dec 25 Python
Django和Ueditor自定义存储上传文件的文件名
Feb 25 Python
基于Python实现nc批量转tif格式
Aug 14 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
APACHE的AcceptPathInfo指令使用介绍
2013/01/18 PHP
如何让CI框架支持service层
2014/10/29 PHP
PHP getallheaders无法获取自定义头(headers)的问题
2016/03/23 PHP
php的debug相关函数用法示例
2016/07/11 PHP
PHP网页安全认证的实例详解
2017/09/28 PHP
文本框获得焦点和失去焦点的判断代码
2012/03/18 Javascript
DOM基础教程之使用DOM
2015/01/19 Javascript
javascript算法题:求任意一个1-9位不重复的N位数在该组合中的大小排列序号
2015/04/01 Javascript
jQuery实现的图片轮播效果完整示例
2016/09/12 Javascript
JavaScript常用数学函数用法示例
2018/05/14 Javascript
[01:00]一分钟回顾2018DOTA2亚洲邀请赛现场活动
2018/04/07 DOTA
[48:32]VGJ.T vs Fnatic 2018国际邀请赛小组赛BO2 第一场 8.16
2018/08/17 DOTA
Python守护进程(daemon)代码实例
2015/03/06 Python
python3实现读取chrome浏览器cookie
2016/06/19 Python
Python制作豆瓣图片的爬虫
2017/12/28 Python
python3解析库BeautifulSoup4的安装配置与基本用法
2018/06/26 Python
matplotlib实现热成像图colorbar和极坐标图的方法
2018/12/13 Python
Python计算库numpy进行方差/标准方差/样本标准方差/协方差的计算
2018/12/28 Python
python range实例用法分享
2020/02/06 Python
python 使用OpenCV进行简单的人像分割与合成
2021/02/02 Python
常用的四种CSS透明属性介绍
2014/04/12 HTML / CSS
Lentiamo丹麦:购买便宜的隐形眼镜
2021/01/13 全球购物
Hammitt官网:设计师手袋
2020/05/23 全球购物
.NET面试题:什么是反射
2016/09/30 面试题
大学生冰淇淋店商业计划书
2014/01/14 职场文书
一夜的工作教学反思
2014/02/08 职场文书
优秀教师工作感言
2014/02/16 职场文书
十佳护士获奖感言
2014/02/18 职场文书
美德少年事迹材料500字
2014/08/19 职场文书
乡镇挂职心得体会
2014/09/04 职场文书
2015廉洁自律个人总结
2015/02/14 职场文书
公司聚餐通知
2015/04/22 职场文书
怎样写好工作计划
2019/04/10 职场文书
JDBC连接的六步实例代码(与mysql连接)
2021/05/12 MySQL
一行Python命令实现批量加水印
2022/04/07 Python
win10滚动条自动往上跑怎么办?win10滚动条自动往上跑的解决方法
2022/08/05 数码科技