背景减法库(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. LeetCode - 231. Power of Two - 判断一个数是否2的n次幂 - 位运算应用实例 - ( C++ )

    1.题目:原题链接 Given an integer, write a function to determine if it is a power of two. 给定一个整数,判断该整数是否是2的 ...

  2. Error: Could not find or load main class org.apache.hadoop.mapreduce.v2.app.MRAppMaster

    自己搭建了一套伪分布的大数据环境,运行Hadoop包中自带的示例时,出现如下错误: 错误: 找不到或无法加载主类 org.apache.hadoop.mapreduce.v2.app.MRAppMas ...

  3. HADOOP docker(十):hdfs 结构体系

    1.简介2.namenode和datanode3.The File System Namespace 文件系统命名空间4.Data Replication 数据复制5.Replica Placemen ...

  4. ZOJ 3229 Shoot the Bullet(有源汇的上下界最大流)

    Description Gensokyo is a world which exists quietly beside ours, separated by a mystical border. It ...

  5. Nodejs中关于模块的总结

    关于Nodejs中的模块 概念 Nodejs在ECMAScript的基础上扩展并封装了许多高级特性,如文件访问.网络访问等,使得Nodejs成为一个很好的Web开发平台.基于Nodejs这个平台将We ...

  6. Python中的eval

    Python中的eval方法接受一个字符串参数,并且把字符串里面的内容当成Python代码来执行: eval的缺点是执行速度慢,并且会有安全风险

  7. [core python programming]chapter 7 programming MS office

    excel.pyw会有问题,解决如下: 因为python3x中没有tkMessageBox模块,Tkinter改成了tkinter你可以查看你的py当前支持的模块.在交互式命令行下输入>> ...

  8. java键盘IO

    public class IO { public static void main(String[] args) throws Throwable { ScannerTest(); // testSc ...

  9. TCP系列04—连接管理—3、TCP连接的半打开和半关闭

    在前面部分我们我们分别介绍了三次握手.四次挥手.同时打开和同时关闭,TCP连接还有两种场景分别是半打开(Half-Open)连接和半关闭(Half-Close)连接.TCP是一个全双工(Full-Du ...

  10. WEB安全测试要点总结

    一.大类检查点: 二.测试项详细说明 上传功能 绕过文件上传检查功能 上传文件大小和次数限制 注册功能 注册请求是否安全传输 注册时密码复杂度是否后台校验 激活链接测试 重复注册 批量注册问题  登录 ...