背景建模技术(三):背景减法库(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的代码流程图:






目录
相关文章
|
7月前
|
机器学习/深度学习 数据可视化 PyTorch
PyTorch基础之模型保存与重载模块、可视化模块讲解(附源码)
PyTorch基础之模型保存与重载模块、可视化模块讲解(附源码)
146 1
|
5月前
|
存储 算法 C++
【Qt应用开发】复刻经典:基于Qt实现Windows风格计算器(加减乘除、删除、归零功能全解析)
在Qt中,"栈"的概念主要体现在两个层面:一是程序设计中的数据结构——栈(Stack),二是用户界面管理中的QStackedWidget控件。下面我将分别简要介绍这两个方面:
156 4
|
4月前
|
算法 计算机视觉 Python
python利用opencv进行相机标定获取参数,并根据畸变参数修正图像附有全部代码(流畅无痛版)
该文章详细介绍了使用Python和OpenCV进行相机标定以获取畸变参数,并提供了修正图像畸变的全部代码,包括生成棋盘图、拍摄标定图像、标定过程和畸变矫正等步骤。
python利用opencv进行相机标定获取参数,并根据畸变参数修正图像附有全部代码(流畅无痛版)
|
4月前
|
存储 算法 C++
【CPP】栈简介及简化模拟实现
【CPP】栈简介及简化模拟实现
|
5月前
|
算法 计算机视觉 索引
python---OpenCv(二),背景分离方法较有意思
python---OpenCv(二),背景分离方法较有意思
|
7月前
|
C++
【51单片机】添加模块代码的常见问题(图示&代码演示)
【51单片机】添加模块代码的常见问题(图示&代码演示)
|
7月前
|
前端开发 算法 JavaScript
【新手解答3】深入探索 C 语言:头文件提供必要的接口、源文件保持实现细节的私有性 + 进一步学习的方向 + 如何快速编写程序并最终能制作小游戏
【新手解答3】深入探索 C 语言:头文件提供必要的接口、源文件保持实现细节的私有性 + 进一步学习的方向 + 如何快速编写程序并最终能制作小游戏
136 0
|
存储 缓存 编译器
Go函数全景:从基础到高阶的深度探索
Go函数全景:从基础到高阶的深度探索
62 0
LearnVIORB 项目编译实现及双目ROS 补充
LearnVIORB 项目编译实现及双目ROS 补充
90 0
|
数据采集 传感器 编解码
点云数据处理方法的应用PCL函数库为例的设计与实现_kaic
在计算机视觉和虚拟现实技术的发展过程中,点云数据已成为主要的三维数据表达形式。将点云数据转换成灰值图时,测算每一个像素点周边领域的点云,但是其效率精密度比较低。文中探讨了点云数据的多视图拼凑和滤波处理,明确提出利用三角形面片法解决点云数据,将文件头和三角形面片信息分为两个存放,明确提出掌握坐标原点位置和方向两个核心平面反向值,点云部位转换优化算法。针对点云数据处理的相关技术研发成为近年来的研究热点,基于此,采用Python作为编程语言,并使用开源编程库Point.Cloud.Library,开发了点云数据处理系统。该系统实现了点云数据读取及数据处理、点云视点变换、重建点云效果显示等功能.