背景减法库(BGS Library = background subtraction library)包含了37种背景建模算法,也是目前国际上关于背景建模技术研究最全也最权威的资料。本文将更加详细的介绍背景减法库(BGS Library)的基本框架与入口函数main()的功能。

BGS库的整体框架在背景建模技术(二)中已经全部给出,此处从函数的角度再次给出BGS库的基本框架,有利于代码的修改与维护。

如下图所示是基于C++的BGS库的函数流程图:

接下来将会对每个函数进行更加详细的分析。

首先,先看入口函数main(),代码如下:

  1. #include "Config.h"
  2. #include "VideoAnalysis.h"
  3. #include <iostream>
  4. using namespace std;
  5. namespace bgslibrary
  6. {
  7. class Main
  8. {
  9. private:
  10. Main();
  11. public:
  12. static void start(int argc, const char **argv)
  13. {
  14. cout << "-----------------------------------------" << endl;
  15. cout << "Background Subtraction Library v1.9.2     " << endl;
  16. cout << "http://code.google.com/p/bgslibrary       " << endl;
  17. cout << "by:                                       " << endl;
  18. cout << "Andrews Sobral (andrewssobral@gmail.com)  " << endl;
  19. cout << "Optimized by:                             " << endl;
  20. cout << "Rui-Dong Fang(National Huaqiao University)" << endl;
  21. cout << "-----------------------------------------" << endl;
  22. cout << "Using OpenCV version " << CV_VERSION << endl;
  23. try
  24. {
  25. int key = KEY_ESC;
  26. do
  27. {
  28. VideoAnalysis* videoAnalysis = new VideoAnalysis;
  29. if (videoAnalysis->setup(argc, argv))    ///videoAnalysis->setup(argc, argv)
  30. {
  31. videoAnalysis->start();
  32. cout << "Processing finished, enter:" << endl;
  33. cout << "R - Repeat" << endl;
  34. cout << "Q - Quit" << endl;
  35. key = cv::waitKey();
  36. }
  37. cv::destroyAllWindows();
  38. delete videoAnalysis;
  39. }
  40. while (key == KEY_REPEAT);
  41. }
  42. catch (const std::exception& ex)
  43. {
  44. cout << "std::exception:" << ex.what() << endl;
  45. return;
  46. }
  47. catch (...)
  48. {
  49. cout << "Unknow error" << endl;
  50. return;
  51. }
  52. #ifdef WIN32
  53. //system("pause");
  54. #endif
  55. }
  56. };
  57. }
  58. int main(int argc, const char **argv)
  59. {
  60. bgslibrary::Main::start(argc, argv);
  61. return 0;
  62. }

在main()函数中,除了打印出相关信息和设置waitKey()以外,主要就是调用了VIdeoAnalysis.cpp(将在下一篇博文中分析)中的videoAnalysis->setup(argc, argv)和videoAnalysis->start()。下面给出Main.cpp的代码流程图:

背景建模技术(三):背景减法库(BGS Library)的基本框架与入口函数main()的功能的更多相关文章

  1. 背景建模技术(二):BgsLibrary的框架、背景建模的37种算法性能分析、背景建模技术的挑战

    背景建模技术(二):BgsLibrary的框架.背景建模的37种算法性能分析.背景建模技术的挑战 1.基于MFC的BgsLibrary软件下载 下载地址:http://download.csdn.ne ...

  2. 背景建模技术(六):帧处理(FrameProcessor)模块

    前面几篇文章简单介绍了BgsLibrary的入口函数.视频分析和视频捕获模块,本文将简单介绍帧处理模块,即对每一帧进行处理的函数,也就是真正调用背景建模算法的接口处. 下面贴出源码供大家分析: #in ...

  3. 背景建模技术(七):预处理(PreProcessor)模块

    预处理(PreProcessor)模块是BgsLibrary中一个必选的模块,是真正进入背景建模算法的“预处理”过程,其主要功能包括‘去模糊’.‘获得灰度图’.'应用Canny算子‘等可选模块. 下面 ...

  4. 背景建模技术(五):视频捕获(VideoCapture)模块

    本次对“视频捕获(VideoCapture)模块”做出分析,给出源代码和对应的程序流程框架. 视频捕获模块的主要功能是设置视频或相机参数,并读取设置配置参数,最后进入帧处理模块的process进程,该 ...

  5. 背景建模技术(四):视频分析(VideoAnalysis)模块

    视频分析模块主要包含两个函数,一个是VideoAnalysis::setup(....),其主要功能就是确定测试的视频是视频文件或摄像头输入亦或是采用命令行参数:第二个函数是VideoAnalysis ...

  6. 【背景建模】SOBS

    SOBS(self-Organizing through artificial neural networks)是一种基于自组织神经网络的背景差分算法,主要是借鉴神经网络的特性,一个网络输入节点,对应 ...

  7. OpenCV4Android背景建模(MOG、MOG2)

    本文为作者原创,转载请注明出处(http://www.cnblogs.com/mar-q/)by 负赑屃     很久以前的笔记了,分享给大家吧...OpenCV4Android中用于背景建模的类主要 ...

  8. 背景建模或前景检測之PBAS

    申明,本文非笔者原创,原文转载自:http://blog.csdn.net/kcust/article/details/9931575 Pixel-Based Adaptive Segmenter(P ...

  9. 【计算机视觉】背景建模之PBAS

    本文是根据M. Hofmann等人在2012年的IEEE Workshop on Change Detection上发表的"Background Segmentation with Feed ...

随机推荐

  1. Objective-C 第一个小程序

    示例一 (类似C) //1.代码编写 //跟C语言一样,OC程序的入口依然是main函数,只不过写到一个.m文件中.比如这里写到一个main.m文件中(文件名可以是中文) #include <s ...

  2. Maya Api笔记 - How polygons are handled internally

    为加深记忆和理解Maya的Polygon,尝试利用空闲时间翻译Maya Api文档相关章节. How polygons are handled internally - 多边形是如何在内部处理的

  3. appcrawler遍历工具常用方法

    Usage: appcrawler [options] -a, --app <value> Android或者iOS的文件地址, 可以是网络地址, 赋值给appium的app选项 -c,  ...

  4. Tensorflow学习第1课——从本地加载MNIST以及FashionMNIST数据

    很多Tensorflow第一课的教程都是使用MNIST或者FashionMNIST数据集作为示例数据集,但是其给的例程基本都是从网络上用load_data函数直接加载,该函数封装程度比较高,如果网络出 ...

  5. 无法启动mysql服务 错误1067:进程意外中止

    这个错误在前些周遇到过,没有解决,直接粗暴的卸载重装了,自己用的是wampserver集成环境,重装的后果是mysql里面的一些已有的数据库就没有了,有点小悲剧,不过幸好都是一些测试用的数据库,后面直 ...

  6. 3ds Max学习日记(一)

      暑假闲来无事学习一发3ds Max.为啥要学这玩意?貌似可以用这东西三维建模.暑期生产实习选了一个搞vr的导师,貌似他忙得很,无奈只好先自己研究一下啦~   vr神马的还是有点意思的,虽然自己仅仅 ...

  7. tomcat web页面管理应用配置

    大部分时候,我们的tomcat服务器都不是部署在本机,那么怎么样不通过ftp/sftp方式来将war包部署到tomcat容器呢? tomcat有提供web页面管理应用的功能. 我们来看看怎么配置实现该 ...

  8. mysql+navicat安装小结

    1,mysql到官方下载,navicat下载破解版 2,修改my.ini, 注意,需要手动创建data文件夹, 其中C:\MySql\mysql-5.7.17-winx64是解压mysql的目录 [m ...

  9. React & event-pooling & bug

    React & event-pooling & bug event-pooling https://reactjs.org/docs/events.html#event-pooling ...

  10. 【Python】python基础_代码编写注意事项

    1. 说明使用的编译方式 1 #!/usr/bin/python 2. 说明字符编码方式 1 #coding=utf-8 3. print 默认输出是换行的,如果要实现不换行需要在变量末尾加上逗号 # ...