C#定义一个模板类
2009-02-02 21:52
253 查看
今天要实现模板类,查找一些资料,发现非常有意思,估计对大家有帮助,所以共享一下。 using System;
using System.Collections.Generic;
using System.Linq;
using System.Text; using Emgu.CV; namespace VSL.Plugin.TrackingSystem.GaitAnalysisTrackingSystem
{ /// <summary>
/// 背景估计模型
/// </summary>
/// <typeparam name="TColor"></typeparam>
/// <typeparam name="TDepth"></typeparam>
public class BackgroundEstimatorModel<TColor, TDepth> where TColor : Emgu.CV.IColor, new()
{
protected int _bufferMax;//缓冲区最大的尺寸
//背景缓冲区
protected Queue<Emgu.CV.Image<TColor, TDepth>> _buffer = new Queue<Emgu.CV.Image<TColor, TDepth>>();
protected Emgu.CV.Image<TColor, TDepth> _background = null; public BackgroundEstimatorModel()
{ } /// <summary>
/// 更新背景
/// </summary>
/// <param name="image"></param>
public virtual void Update(Emgu.CV.Image<TColor, TDepth> image)
{
if (_buffer.Count == _bufferMax)//达到缓冲队列的最大值,则出队列
{
_buffer.Dequeue();//出队列
}
_buffer.Enqueue(image);//新的帧入队列 //创建背景图像
if (_background == null)
_background = new Emgu.CV.Image<TColor, TDepth>(image.Size); foreach (var frame in _buffer)
{
//更具不同的算法更新背景 }
}
} /// <summary>
/// 灰度背景模型
/// </summary>
public class GrayBackgroundEstimatorModel : BackgroundEstimatorModel<Gray, Byte>
{
//只支持灰度背景
public override void Update(Image<Gray, byte> image)
{
if (_buffer.Count == _bufferMax)//达到缓冲队列的最大值,则出队列
{
_buffer.Dequeue();//出队列
}
_buffer.Enqueue(image);//新的帧入队列 //创建背景图像
if (_background == null)
_background = new Emgu.CV.Image<Gray, Byte>(image.Size); foreach (var frame in _buffer)
{
//更具不同的算法更新背景 }
} }
public enum BG_EISTIMATOR_TYPE
{
/// <summary>
///
/// </summary>
FGD_STAT_MODEL,
/// <summary>
/// Gaussian background model
/// </summary>
GAUSSIAN_BG_MODEL, /// <summary>
/// Move Forward
/// </summary>
MOVEFORWARD
}
}
using System.Collections.Generic;
using System.Linq;
using System.Text; using Emgu.CV; namespace VSL.Plugin.TrackingSystem.GaitAnalysisTrackingSystem
{ /// <summary>
/// 背景估计模型
/// </summary>
/// <typeparam name="TColor"></typeparam>
/// <typeparam name="TDepth"></typeparam>
public class BackgroundEstimatorModel<TColor, TDepth> where TColor : Emgu.CV.IColor, new()
{
protected int _bufferMax;//缓冲区最大的尺寸
//背景缓冲区
protected Queue<Emgu.CV.Image<TColor, TDepth>> _buffer = new Queue<Emgu.CV.Image<TColor, TDepth>>();
protected Emgu.CV.Image<TColor, TDepth> _background = null; public BackgroundEstimatorModel()
{ } /// <summary>
/// 更新背景
/// </summary>
/// <param name="image"></param>
public virtual void Update(Emgu.CV.Image<TColor, TDepth> image)
{
if (_buffer.Count == _bufferMax)//达到缓冲队列的最大值,则出队列
{
_buffer.Dequeue();//出队列
}
_buffer.Enqueue(image);//新的帧入队列 //创建背景图像
if (_background == null)
_background = new Emgu.CV.Image<TColor, TDepth>(image.Size); foreach (var frame in _buffer)
{
//更具不同的算法更新背景 }
}
} /// <summary>
/// 灰度背景模型
/// </summary>
public class GrayBackgroundEstimatorModel : BackgroundEstimatorModel<Gray, Byte>
{
//只支持灰度背景
public override void Update(Image<Gray, byte> image)
{
if (_buffer.Count == _bufferMax)//达到缓冲队列的最大值,则出队列
{
_buffer.Dequeue();//出队列
}
_buffer.Enqueue(image);//新的帧入队列 //创建背景图像
if (_background == null)
_background = new Emgu.CV.Image<Gray, Byte>(image.Size); foreach (var frame in _buffer)
{
//更具不同的算法更新背景 }
} }
public enum BG_EISTIMATOR_TYPE
{
/// <summary>
///
/// </summary>
FGD_STAT_MODEL,
/// <summary>
/// Gaussian background model
/// </summary>
GAUSSIAN_BG_MODEL, /// <summary>
/// Move Forward
/// </summary>
MOVEFORWARD
}
}
相关文章推荐
- C# - 重定义一个接口的实现
- c#中定义一个枚举类型
- C#语法基础-定义一个矩形对象
- 在 C# 中定义一个真正只读的 List
- C#--第九周实验--任务3--定义一个静态成员方法,使用Random实现从一组数中随机抽取n个不重复的数。
- C# 定义用户控件并添加属性(制作一个限定输入的文本框)
- 16、2015.08.03第十七节课 C#1(.net和C#的关系、VS与.net的对应关系、VS2012常用的几种应用程序、C#定义一个类的方法、类页面内容的解释、定义Person的类、调用Person类的方法、命名规范、数值类型)
- 定义和实现模板类不能在同一个文件
- C#定义一个手势
- 用C++的模板类定义一个万能数组,数组元素类型任意,数组大小也任意
- 模板类成员函数的定义和声明为什么要放在一个文件中
- C#中定义一个事件和对其的调用
- C# Visual Studio 2005中定义一个变量让所有的Form都能访问到
- c#定义一个方法,根据存储过程名称和存储过程参数数组,执行对应的存储过程
- C#变量定义中类型后带一个问号
- 《定义一个学生基本情况的类——C#第四周》
- C#中定义数组和一个简单排序算法实现。
- 第七周上机任务三--实现一个复数类--通过模板类的技术手段,设计Complex,使实部和虚部的类型为定义对象时用的实际类型
- clr via c#学习体会——clr如何调用一个类型中定义的方法(上)
- 关于asp.net(c#),webconfig中如何定义一个字符串让所有页面共同使用?