⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 lgmm.h

📁 动态场景中运动目标检测提取与跟踪 对新手很有用
💻 H
字号:
#ifndef LGMMCUT_H
#define LGMMCUT_H
#include "cv.h"
#include "highgui.h"
#include "lgraph.h"
#include "lgmm.h"

#define 	LALPHA   0.05  //模型更新或学习速度的参数
#define      LT      0.5   //决定背景模型的阈值

class LGM  
{
public:
	LGM();
	virtual ~LGM();
	void Init(unsigned char size, float *mean);
	void Init(float *mean, float weight);
	bool IsValid(float *value, float *distance);//%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
	void Update(float *value, float &distance);
	void Update(void);
	void Init_Update(float *distance, float sum);//%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

	float *m_mean;//模型均值
	unsigned char  m_size;//均值向量尺寸
	float* m_variance;//模型标准方差
	float m_weight;//模型权重
	
	bool m_background;//是否为背景模型
	long int m_time;//集焦或失焦时间(focus or unfocus, hit or miss)
};

class LGMM  
{
public:
	LGMM();
	virtual ~LGMM();
	void Init(unsigned char num, unsigned char size, float *mean);
	bool Process(float *value);
	void Init_Process(float *value);
	void Norm(void);

	unsigned char m_num;//高斯模型的个数
	LGM **m_ptr;//指向高斯模型的指针

};

class CCameraVideo
{
	public:
    CvCapture*	m_camcapture;
	CWinThread	*m_pThread; // 抓取图像的线程。
	CImage		orgImage4Show;
	CImage		m_ShowImage;	 // 供视图显示的图像。
    IplImage* m_bg_Image,m_frame,m_image,hsv;
	IplImage* m_bg_Image_S;		//阴影背景模型
	int m_imageWidth,m_imageHeight;
	int P0,P1, P2, P3, P4, P5, P6;	//参数设置
	LGraph::node_id** node;
	LGraph *g;
	int pos;	//图像序列号
	LGMM *bgModel;	//GMM背景模型
	LGMM *bgModel_S;	//shadow GMM背景模型
	CString directoryname;		//分割图像目录名
	CString seqbmpfilenamehead;		//分割图像的文件头,不仅是图像文件夹、目录名
	IplImage *curImage,*hsvcurImage;	//当前图像RGB数据和当前图像HSV数据


	int P_eval_S;	//参数设置
	float P_RateMIN;
	float P_RateMAX;
	BOOL Pause();
	BOOL fast_segment_runGmmCut_video();
	CvCapture * m_videocapture;
	
//	int 3sizeof_uchar;
	//	UINT	ThreadMain(LPVOID pParam);
	

//	CCamvideoView* pCCamvideoView;


// Operations
public:
	void process();
	void learnBgModel(CString imageFileDirectory);		//从bmp中学习背景模型
	void learnBgModel_video();		//从video中学习背景模型
	void learnBgModel_S_video();	//从video中学习背景和阴影模型
	uchar* cvGetpixelHSV(IplImage* img,int x,int y);	//读取(x,y)点的HSV象素值,返回BYTE* 顺序是H/2,S,V(when 8bit)
	BYTE* cvGetpixel(IplImage* img,int x,int y);	//读取(x,y)点的RGB象素值,返回BYTE* 顺序是R,G,B
//	float* cvGetpixel(IplImage* img,int x,int y,int i);
	void constructGraph(IplImage* bg_image,IplImage* cur_Image);	//静态graph cut
	BOOL cvSetPixel(IplImage* img,int x,int y,int R,int G,int B);	//写入(x,y)点的RGB象素值,返回BOOL
	BOOL cvSetPixelHSV(IplImage* img,int x,int y,int H,int S,int V);//写入(x,y)点的HSV象素值,返回BOOL 顺序是H,S,V(when 8bit)
	void destructGraph();	//释放graph空间
	int runGmmCut(int index);	//动态GMM Graph cut
	void gmmCut(const int index,const int index_nmb);	//静态单帧GMM Graph cut
	void gmmCut_video(const int index,const int index_nmb);
	//单步静态的Gmm Graph cut,在runGmmCut()动态Gmm Graph cut的前初始化graph,还有被按钮OnGMMGraph调用
    BOOL GetParameters();
	CCameraVideo(CvCapture* pCapture,CString pathname);
    ~CCameraVideo();

	static UINT __cdecl StaticThreadMain(void *pvDocument);
	void	GrabNext();
// Implementation

};




#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -