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

📄 global.h

📁 图像标注程序
💻 H
字号:

#ifndef GLOBAL_H
#define GLOBAL_H		1

#define MAX3(A,B,C) (((A)>=(B))?(A):(B))>=(C)?(((A)>=(B))?(A):(B)):(C)
#define MIN3(A,B,C) (((A)>=(B))?(B):(A))>=(C)?(C):(((A)>=(B))?(B):(A))

typedef		enum
{
	ALL_RIGHT,
	NO_FACE_FOUND_ERR,
	NO_IRIS_FOUND_ERR,
	NOSE_FOUND_ERR,
	MEM_ERR,
	OPEN_FILE_ERR,
	OTHER_ERR

}	ERROR_TYPE_ENUM;


#define	  POSENUMBER	4

#define FRONTAL			0
#define LEFT			1
#define RIGHT			2
#define UP				3
#define DOWN			4
#define LEFTUP			5
#define RIGHTUP			6
#define LEFTDOWN		7
#define RIGHTDOWN		8

#define SUBHEIGHT		64  //32
#define SUBWIDTH		64  //32
#define EYEWIDTH		72	//the width of the eye region
#define EYEHEIGHT		32	//the height of the eye region
#define STARTX			0	//the cx value of display position
#define STARTY			0	//the cy value of display position
#define SCROLLWIDTH		800	//the initial width  of the view
#define SCROLLHEIGHT	640	//the initial height of the view

#define DETECTTRAINSIZE 80	//训练生成检测用的特征脸的脸库大小
#define DETECTWIDTH		32  //训练生成检测用的特征脸人脸宽度
#define DETECTHEIGHT	32  //训练生成检测用的特征脸人脸高度
#define DETECTEFNUM		14  //检测用特征脸数

#define RECOGTRAINSIZE  600 //400 //500 //训练生成识别用的特征脸的脸库大小 
#define RECOGWIDTH		64  //已知人脸库中的人脸大小
#define RECOGHEIGHT		64  //已知人脸库中的人脸大小

#define FACEBASESIZE	300//400 //210 //人脸库大小

#define RECOGEFNUM		32  //识别用特征脸数

#define EPS				0.0000000000001
#define COEF			0.9


#define TSSIZE			180 
#define HFCNUM			64  
#define WIDTH			64  
#define HEIGHT			64  

//////From fxtFaceDetect.h//////
#define BORDER			9
#define DEFAULTSTART	30
#define DEFAULTEND		150//80   98.6.10
#define DEFAULTSTEP		10	//20   98.6.10
#define WH				320	
#define HH				240	
#define VP				25L
#define VN				30L
#define IMN				300
#define VLEN1			116L
#define VLEN2			136L
#define VLEN3			116L
#define INPUT_SIZE		14
/////////////////from xlchen's canny algorithm
// scales angles in radians to fit within the 0-255 range of unsigned char variables
#define ORIENT_SCALE     40.0
#define MAX_FILTER_WIDTH 60
#define uchar            unsigned char
//////////////////////////////////////

/////////fxtfacedetect.h///////
BOOL	ReadInFaceMask();
void	ShrinkImage(BYTE *scrImage, BYTE* destImage, WORD w, WORD h, float cscale);
void	ShrinkImage(BYTE *scrImage, BYTE* destImage, WORD scrW, WORD scrH,WORD destW, WORD destH);
void	MagnifyImage(BYTE *scrImage, BYTE* destImage, WORD scrW, WORD scrH,WORD destW, WORD destH);
void	CalEgvalue(double *matrix,long n,double *eigenvalue,double *c);
DWORD	CalEgvector(double *matrix,long n,double *eigenvalue,double *c,double eps);
double	NormalVector(double* vector, DWORD N);
double	InnerProduct(double* p1,double* p2, DWORD N);
void	OrderValues(double* ev, WORD* order, WORD M);
void	NewOrder(double* ev, WORD* order, WORD* No, WORD M);
double	EuclidDistance(double* pv1, double* pv2, DWORD Length);
double	PointDistance(CPoint p1, CPoint p2);
double	Project(CPtrArray* pfaEF, double* pMeanFace, BYTE* pImageData,	
			double* pProjecVector, DWORD dwImageSize, WORD wEigenFaceNum);
BOOL	RevertImage(CPtrArray* pfaEF, double* pMeanFace, BYTE* pImageData,
			double* project, DWORD dwImageSize, WORD wEigenFaceNum);
double	DistanceFromFaceSpace(CPtrArray* pfaEF, double* pMeanFace, BYTE* pImageData,
			DWORD dwImageSize,	WORD wEigenFaceNum);
void	GetSubImageData(BYTE* scrImgData, BYTE* destImgData, WORD scrW, WORD scrH, 
					 CPoint start,CSize size);
void	GetHisName(CString filename, CString& HisName);
BOOL	IsSamePeople(CString s1, CString s2);

bool RGB2HSI(BYTE R, BYTE G, BYTE B, WORD& H, float& S, float& I);
BOOL RGB2YIQ(BYTE R, BYTE G, BYTE B, BYTE & Y, float & I, float & Q);
BOOL RGB2Fai(BYTE R, BYTE G, BYTE B, int& Fai);
BYTE	RGB2I(BYTE R, BYTE G, BYTE B);
int		RGB2Fai(BYTE R, BYTE G, BYTE B);

void global_DoRotation(BYTE * inImg,BYTE* outImg,int outImgWidth,int outImgHeight,int rx,int ry,int rsize,int rangle);
void global_DoRotation2(BYTE * inImg,int inImgWidth,int inImgHeight,BYTE* outImg,int outImgWidth,int outImgHeight,int rx,int ry,int rsize,int rangle);
void global_DoRotation3(BYTE * inImg,int inImgWidth,int inImgHeight,BYTE* outImg,int outImgWidth,int outImgHeight,int rx,int ry,int rsize,int rangle);
double arctg(double x,double y);
//void RGB2HSV(float,float,float,float,float,float);
float RGB2HSV(BYTE,BYTE,BYTE,BOOL);

void gConvert(BYTE *InData,BYTE *OutData,int FaiMin,int FaiMax,int fIMin,int fIMax,DWORD dwSize);

CPoint gXPosAndMu(int *XData,int XSize);
void   gOneDimensionErrosion(int *XData,int XSize);

template <class T> 
BOOL	NormDistParaEsti( T* data, int n, T& mu, T& delta)
{
	int	i;
	double u, d;
	u = 0.0;
	for(i=0; i<n; i++)
		u += (double)data[ i ];
	u /= n;
	d = 0.0;
	for(i=0; i<n; i++)
		d += (double) (u - data[ i ]) * (u - data[ i ]);
	d /= double( n );
	d = double( sqrt(d) );

	mu = T( u );
	delta = T( d );
	return TRUE;
}

template <class T> 
void	VectorDivideScalor(T* v, T s, int n)
{
	for(int	i=0; i<n; i++)
		v[i] /= s;
}

template <class T> 
void	AddVector(T* v1, T* v2, int n)
{
	for(int	i=0; i<n; i++)
		v1[i] += v2[i];
}
template <class T> 
void	AddVector(T* dv, T* sv1, T* sv2, int n)
{
	for(int	i=0; i<n; i++)
		dv[i]  = sv1[i] + sv2[i];
}
template <class T> 
void	SubstractVector(T* dv, T* sv1, T* sv2, int n)
{
	for(int	i=0; i<n; i++)
		dv[i]  = sv1[i] - sv2[i];
}

template <class T> 
void	AccSqrSubVector(T* dv, T* sv1, T* sv2, int n)
{
	for(int	i=0; i<n; i++)
		dv[i]  += T((sv1[i] - sv2[i]) * (sv1[i] - sv2[i]));
}


/////////////xlchen's canny//////////////
double	Gaussian(double x, double s);
double	hypotenuse(double x, double y);
void	ThresholdingTracker(int high, int low, int Width, int Height, 
				uchar *Img, uchar *EdgeIntensity, uchar *EdgeDir);
int		follow(int i, int j, int low, int Width, int Height, uchar *Img, 
				uchar *EdgeIntensity, uchar *EdgeDir);
void	CannyEdge(double Sigma, int Width, int Height, uchar *Img, 
				uchar *PotentialEdge, uchar *EdgeIntensity,	 uchar *EdgeDir);

/////////////zhm's FindMaxPosition of an array//////////////
int FindMaxPosition(int *Data,int Size);
#endif

⌨️ 快捷键说明

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