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

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

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

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

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

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

#include "Config.h"
#include "VideoAnalysis.h"
#include <iostream>

using namespace std;

namespace bgslibrary
{
	class Main
	{
		private:
		Main();

		public:
		static void start(int argc, const char **argv)
		{
			cout << "-----------------------------------------" << endl;
			cout << "Background Subtraction Library v1.9.2     " << endl;
			cout << "http://code.google.com/p/bgslibrary       " << endl;
			cout << "by:                                       " << endl;
			cout << "Andrews Sobral (andrewssobral@gmail.com)  " << endl;
			cout << "Optimized by:                             " << endl;
			cout << "Rui-Dong Fang(National Huaqiao University)" << endl;
			cout << "-----------------------------------------" << endl;
			cout << "Using OpenCV version " << CV_VERSION << endl;

			try
			{
				int key = KEY_ESC;

				do
				{
					VideoAnalysis* videoAnalysis = new VideoAnalysis;

					if (videoAnalysis->setup(argc, argv))	///videoAnalysis->setup(argc, argv)
					{
						videoAnalysis->start();

						cout << "Processing finished, enter:" << endl;
						cout << "R - Repeat" << endl;
						cout << "Q - Quit" << endl;

						key = cv::waitKey();
					}

					cv::destroyAllWindows();
					delete videoAnalysis;

				}
				while (key == KEY_REPEAT);
			}
			catch (const std::exception& ex)
			{
				cout << "std::exception:" << ex.what() << endl;
				return;
			}
			catch (...)
			{
				cout << "Unknow error" << endl;
				return;
			}

#ifdef WIN32
	//system("pause");
#endif
		}
	};
}

int main(int argc, const char **argv)
{
	bgslibrary::Main::start(argc, argv);
	return 0;
}

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

时间: 2024-09-16 10:03:36

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

背景建模技术(一):介绍、资源下载、“背景建模库”平台搭建

背景建模技术(一):介绍.资源下载."背景建模库"平台搭建 1.介绍 视频分析与理解是一个非常活跃的研究领域,在这个研究领域(如视频监控.多媒体应用等)中,第一步要做的就是检测场景中运动的目标.而背景建模技术是检测前景最常用的技术之一,具有举足轻重的作用和研究意义. 2.资源下载 BgsLibrary的下载:BgsLibrary库 OpenCV的下载:http://opencv.org/  (推荐下载版本2.4.10) 注:PC默认已经安装VS2010. 3."背景建模库&q

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

背景建模技术(二):BgsLibrary的框架.背景建模的37种算法性能分析.背景建模技术的挑战 1.基于MFC的BgsLibrary软件下载 下载地址:http://download.csdn.net/detail/frd2009041510/8691475 该软件平台中包含了37种背景建模算法,可以显示输入视频/图像.基于背景建模得到的前景和背景建模得到的背景图像,还可以显示出每种算法的计算复杂度等等.并且,测试的可以是视频.图片序列以及摄像头输入视频.其界面如下图所示: 2.BgsLibr

HEVC Study Two(基于HM14.0平台)--如何在HEVC中加入背景建模技术(一)

随着AVS的逐步发展,AVS中的一些创新也得到国际上越来越多学者的关注.尤其是AVS中针对监控视频编码的背景建模技术和感兴趣区域提取技术.对于国际同行来说,如何在HEVC的参考软件平台HM上加入这两项技术是一个工作量甚大的事情.本文就本人做的一些工作做简单介绍. 软件平台HM14.0,IDE:VS2010(英文版) 废话了这么多,下面开始真正的内容: 在<HEVC framework before starting encoding(基于HM14.0平台)>中(网址:点击打开链接)讲述了进入编

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

前面几篇文章简单介绍了BgsLibrary的入口函数.视频分析和视频捕获模块,本文将简单介绍帧处理模块,即对每一帧进行处理的函数,也就是真正调用背景建模算法的接口处. 下面贴出源码供大家分析: #include "FrameProcessor.h" #include <iomanip> namespace bgslibrary { FrameProcessor::FrameProcessor() : firstTime(true), frameNumber(0), dura

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

预处理(PreProcessor)模块是BgsLibrary中一个必选的模块,是真正进入背景建模算法的"预处理"过程,其主要功能包括'去模糊'.'获得灰度图'.'应用Canny算子'等可选模块. 下面给出源码: #include "PreProcessor.h" namespace bgslibrary { PreProcessor::PreProcessor() : firstTime(true), equalizeHist(false), gaussianBlu

背景建模技术(八):bgslibrary_vs2010_mfc中boost的安装与配置

一.boost的下载与安装 在玩BGS Library时,有一个MFC的项目,在编译的过程中出现如下图的错误提示: 即: 1>e:\bgslibrary-master\vs2010mfc\src\stdafx.h(50): fatal error C1083: Cannot open include file: 'boost/lexical_cast.hpp': No such file or directory 根本原因在于没有安装和配置boost,下面对bgslibrary_vs2010_m

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

本次对"视频捕获(VideoCapture)模块"做出分析,给出源代码和对应的程序流程框架. 视频捕获模块的主要功能是设置视频或相机参数,并读取设置配置参数,最后进入帧处理模块的process进程,该模块的源码如下,请重点关注start()函数: #include "VideoCapture.h" namespace bgslibrary { namespace VC_ROI { IplImage* img_input1 = 0; IplImage* img_inp

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

视频分析模块主要包含两个函数,一个是VideoAnalysis::setup(....),其主要功能就是确定测试的视频是视频文件或摄像头输入亦或是采用命令行参数:第二个函数是VideoAnalysis::start(),其主要功能初始化视频处理.设置视频获取方式以及开始视频捕获功能等. 1.VideoAnalysis::setup(....) 该函数的代码如下: bool VideoAnalysis::setup(int argc, const char **argv) { bool flag

混合高斯背景建模原理及实现

前些日子一直在忙答辩的事情,毕业后去了华为,图像处理什么的都派不上用场了.打算分3-4篇文章,把我研究生阶段学过的常用算法为大家和4107的师弟师妹们分享下.本次介绍混合高斯背景建模算法,还是老样子,首先介绍理论部分,然后给出代码,最后实验贴图. 一.理论 混合高斯背景建模是基于像素样本统计信息的背景表示方法,利用像素在较长时间内大量样本值的概率密度等统计信息(如模式数量.每个模式的均值和标准差)表示背景,然后使用统计差分(如3σ原则)进行目标像素判断,可以对复杂动态背景进行建模,计算量较大.