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

📄 aigesture.h

📁 超强手势识别程序
💻 H
字号:
// AIGesture.h: interface for the CAIGesture class.
//编写人:苏树庆
//类别:手势识别
//////////////////////////////////////////////////////////////////////

#if !defined(AFX_AIGESTURE_H__E6372192_B4B6_4032_8C95_60C2908C9C59__INCLUDED_)
#define AFX_AIGESTURE_H__E6372192_B4B6_4032_8C95_60C2908C9C59__INCLUDED_

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000

#include "GestureStruct.h"

class CAIGesture  
{
public:

	CAIGesture();
	virtual ~CAIGesture();
public:
	void SkinDetect(IplImage* src,IplImage* dst);
	//肤色检测,其中src为输入图像,dst为输出图像

	void FindBigContour(IplImage* src,CvSeq* (&contour),CvMemStorage* storage);
	//求最大的轮廓,src为输入图像,contour是输出轮廓,storage为opencv一个内存结构

	void ComputeCenter(CvSeq* (&contour),CvPoint& center,float &radius);
	//计算机出手势的中心,contour为输入轮廓,center为输出中心,radius为输出半径

	void GetFeature(IplImage* src,
		CvPoint& center,
		float radius,
		float angle[FeatureNum][10],
		float anglecha[FeatureNum][10],
		float count[FeatureNum]);
	//提取手势的特征,src为输入图像,center为输入中心,radius为输入半径,angle,anglecha,count为输出特征

	void OneGestureTrain(CString GesturePath,CvFileStorage *fs,GestureStruct gesture);
	//对单类图像进行训练,GesturePath为输入手势训练文件夹,fs为一个文件存储器,gesture是一个手势结构

	void Train();
	//训练,其中FolderPath为训练样本的文件夹路径

	void Recognise(IplImage* src,CString& result);
	//识别,src为输入图像,result为输出结果

	void Follow(IplImage* src,CvRect& track_window,CvBox2D &track_box);
	//手势跟踪,src为输入图像,track_window为一个跟踪矩形,track_box为一个输入参数,目前没用上,可能以后会用上

	void RecogniseSeq(CvPoint pt[8],float width,float height,CString &result);
	//对一个序列进行识别,pt[8]是输入的8个点,result为输出的结果,flag为判断是否为第一次,因为只有两次识别才认为是命令
	void ColorRegulate(IplImage* src,IplImage* dst);
	//进行颜色校正,不过效果好像不是很好,src为输入图像,dst为输出图像

	void EqualImage(IplImage* src,IplImage*dst);
	//直方图均衡化,src为输入图像,dst为输出图像

	void SaveImage(IplImage* src);
	//保存图像用以训练

	void RecogniseResult(CString str[8],CString &result);
	//提取在str[8]中出现次数大于6的字符串保存到result中;

	/*下面程序段作为备用,目前还没有得到应用*/
	void CalcHist(IplImage* src,CvRect &rect,CvHistogram* (&hist));
	//计算rect内的肤色部分的直方图

	void Follow(IplImage* src,CvRect& track_window,CvHistogram* &hist,BOOL& Flag);
	//对手势进行跟踪

	void SaveForTrain(IplImage* src,CvPoint pt[8],CString &result);
	//对一个点的序列进行保存,可以训练,可以用HMM模型试一下,不过,HMM模型看不出方向,应该指明方向

	void Location(IplImage* src[8],CRect& rect);
};

#endif // !defined(AFX_AIGESTURE_H__E6372192_B4B6_4032_8C95_60C2908C9C59__INCLUDED_)

⌨️ 快捷键说明

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