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

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


背景减法库(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的代码流程图:






目录
相关文章
|
4月前
|
机器学习/深度学习 数据可视化 PyTorch
PyTorch基础之模型保存与重载模块、可视化模块讲解(附源码)
PyTorch基础之模型保存与重载模块、可视化模块讲解(附源码)
46 1
|
4月前
|
前端开发 Python
前端知识(十七)——入口函数和特定函数的区别
前端知识(十七)——入口函数和特定函数的区别
32 0
|
9月前
Echarts实战案例代码(19):利用visualMap视觉映射组件制作五色玫瑰工作进程图
Echarts实战案例代码(19):利用visualMap视觉映射组件制作五色玫瑰工作进程图
150 0
|
1天前
|
图形学
【ShaderToy中图形效果转译到UnityShaderlab案例分享,代码实现可调节三叶草_Leaf】
【ShaderToy中图形效果转译到UnityShaderlab案例分享,代码实现可调节三叶草_Leaf】
|
4月前
|
前端开发 算法 JavaScript
【新手解答3】深入探索 C 语言:头文件提供必要的接口、源文件保持实现细节的私有性 + 进一步学习的方向 + 如何快速编写程序并最终能制作小游戏
【新手解答3】深入探索 C 语言:头文件提供必要的接口、源文件保持实现细节的私有性 + 进一步学习的方向 + 如何快速编写程序并最终能制作小游戏
60 0
|
8月前
LearnVIORB 项目编译实现及双目ROS 补充
LearnVIORB 项目编译实现及双目ROS 补充
48 0
|
10月前
|
数据采集 传感器 编解码
点云数据处理方法的应用PCL函数库为例的设计与实现_kaic
在计算机视觉和虚拟现实技术的发展过程中,点云数据已成为主要的三维数据表达形式。将点云数据转换成灰值图时,测算每一个像素点周边领域的点云,但是其效率精密度比较低。文中探讨了点云数据的多视图拼凑和滤波处理,明确提出利用三角形面片法解决点云数据,将文件头和三角形面片信息分为两个存放,明确提出掌握坐标原点位置和方向两个核心平面反向值,点云部位转换优化算法。针对点云数据处理的相关技术研发成为近年来的研究热点,基于此,采用Python作为编程语言,并使用开源编程库Point.Cloud.Library,开发了点云数据处理系统。该系统实现了点云数据读取及数据处理、点云视点变换、重建点云效果显示等功能.
|
存储 自然语言处理 编译器
程序环境和预处理 概念详解
程序环境和预处理 概念详解
58 0
|
存储 缓存 测试技术
SystemVerilog学习-04-验证环境组件、任务和函数
SystemVerilog学习-04-验证环境组件、任务和函数
235 0
SystemVerilog学习-04-验证环境组件、任务和函数
|
IDE 编译器 开发工具
OpenGL学习笔记(六):创建第一个VS2015 OpenGL工程模板(与平台无关)
OpenGL学习笔记(六):创建第一个VS2015 OpenGL工程模板(与平台无关)
OpenGL学习笔记(六):创建第一个VS2015 OpenGL工程模板(与平台无关)