www.pudn.com > expressionsb.rar > EGraph.h
// EGraph.h: interface for the CEGraph class.
//
//////////////////////////////////////////////////////////////////////
#if !defined(AFX_EGRAPH_H__CFBC70CC_A889_4559_83BB_AE78EFCD86E5__INCLUDED_)
#define AFX_EGRAPH_H__CFBC70CC_A889_4559_83BB_AE78EFCD86E5__INCLUDED_
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
#include "dib.h"
#include "expstrategy.h"
/**
该类主要用于存储表情图像的弹性图
*/
#define KEY_NUM 13//定义表情关键点的个数
enum expressionKind{angry,sadness,surprise,disgust,smile,fear};
class CEGraph
{
public:
CEGraph();
virtual ~CEGraph();
public://公有属性
FLOAT Cal_ModuleDis(CEGraph* tmpEGraph);
void DetectKeyPoints();
FLOAT sub_CalEnergy(FLOAT testVect[18],FLOAT tempVect[18]);
FLOAT CalEnergy(CEGraph *tempEG);
BOOL init_testExpr(CDIB *pDIB, CExpStrategy *pExpStr);
BOOL init_tempExpr(CDIB *pDIB, CExpStrategy *pExpStr);
// FLOAT *m_pvGraph[43];//用于存储弹性图中的向量,0单元不用,1~39
FLOAT *m_pvGraph[360];//用于存储弹性图中的向量,0单元用,0~359
int m_dimension;//保存实际存储向量的维数
enum expressionKind m_kind;//保存该弹性图的表情类型(6+1种类型)
CEGraph *m_pNext;//用于构造单向链表
///增加的属性:
FLOAT m_module[360];//保存每个向量的模,第一个单元用
CPoint m_keyPoints[KEY_NUM];
protected:
FLOAT Cal_neiji(FLOAT vec1[], FLOAT vec2[]);
FLOAT CalModule(FLOAT * vector);
//由DetectKeyPoints()调用,在某个子区域里获得模最大的几个点
//并将这几个点存入m_keyPoints[]数组中,从_from 到_to
void GetKeys(CRect _subRect, int _from, int _to);
};
#endif // !defined(AFX_EGRAPH_H__CFBC70CC_A889_4559_83BB_AE78EFCD86E5__INCLUDED_)