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

📄 objecttracker.h

📁 学习meanshift跟踪算法的好程序
💻 H
字号:
#include "defs.h"

#if !defined(OBEJCTTRACKER_H_INCLUDED_)
#define OBEJCTTRACKER_H_INCLUDED_


#define  HISTOGRAM_LENGTH			8192
#define  MAX_OBJECT_TRACK_NUMBER	1 


typedef unsigned char   UBYTE8;
typedef char            BYTE8;
typedef short           SINT16;
typedef unsigned int    UINT32;
typedef int             INT32;
typedef unsigned long   ULONG_32;
typedef long            LONG_32;
typedef float           FLOAT32;
typedef double          DOUBLE64;
typedef long double     LDOUBLE80;
typedef bool		    BBOOL;

enum IMAGE_TYPE {MD_RGB, MD_RGBA, MD_YUV, MD_WAVELET};


class CObjectTracker
{
private:

	struct OBJECT_SPECS
	{
		BBOOL   Status;
		BBOOL   assignedAnObject;
		SINT16  X;
		SINT16  Y;
		SINT16  W;
		SINT16  H;
		SINT16  vectorX;
		SINT16  vectorY;
		FLOAT32  initHistogram[HISTOGRAM_LENGTH];
	};

	OBJECT_SPECS m_sTrackingObjectTable[MAX_OBJECT_TRACK_NUMBER+1];
	INT32	 m_nImageWidth;
	INT32	 m_nImageHeight;
	IMAGE_TYPE m_eIMAGE_TYPE;
	UBYTE8  m_cSkipValue;
	SINT16	 m_nFrameCtr;
	UBYTE8  m_cActiveObject;

	ULONG_32 m_uTotalTime;
	SINT16   m_nMaxEstimationTime;
	FLOAT32  TotalDist;	//record total distance to evaluate performance
	FLOAT32  LastDist;	//record the latest distance

	void FindHistogram(IplImage *frame,FLOAT32 (*histogram));
	void DrawObjectBox(IplImage *frame);	//set to public
	void FindWightsAndCOM(IplImage *frame,FLOAT32 (*histogram));
	FLOAT32 FindDistance(FLOAT32 (*histogram));
	UBYTE8 CObjectTracker::CheckEdgeExistance(IplImage *r, IplImage *g, IplImage *b, SINT16 _x,SINT16 _y);
	void UpdateInitialHistogram(UBYTE8 (*histogram));
	void FindNextLocation(IplImage *frame);
	void FindNextFixScale(IplImage *frame);
//	ULONG_32 GetPixelValues(UBYTE8 *frame,SINT16 x,SINT16 y);	//reimplemented to comply with the structure
	void CObjectTracker::SetPixelValues(IplImage *r,IplImage *g,IplImage *b,ULONG_32 pixelValues,SINT16 x,SINT16 y);
	ULONG_32 GetBoxColor();
	FLOAT32 CompareHistogram(UBYTE8 (*histogram));


public:

	CObjectTracker(INT32 imW,INT32 imH,IMAGE_TYPE eImageType);
	virtual ~CObjectTracker() ;
	void CObjectTracker::ObjeckTrackerHandlerByUser(IplImage *frame);
	float CObjectTracker::GetTotalDist(void);
	void ObjectTrackerInitObjectParameters(SINT16 x,SINT16 y,SINT16 Width,SINT16 Height);
};//end of trackobject class
//---------------------------------------------------------------------------
#endif

⌨️ 快捷键说明

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