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

📄 load.cpp

📁 face recognition test source code
💻 CPP
📖 第 1 页 / 共 2 页
字号:
					Msg(+1, str_PROJECT_TRAINING);
					break;
				case FS2_PROCESSING:
					ret = GetTrainingDB()->AddFace(fs->data);
					if (ret < 0)
						return ret;
					break;
				case FS2_END:
					int leigen = -1;
					if (fs->args[0] != 0)					/*process the optional argument*/
						{											/*There are some option(s)*/
						if (isalnum((fs->args)[0]) != 0)
							{										/*The first option is a number, it is the number of eigenvectors*/
							leigen = atol(fs->args);
							}
						}
						Msg(-1, str_PROJECT_TRAINING_DONE, GetTrainingDB()->GetNumFace());
								
						ret = Build(leigen);
						if (ret < 0)
							return ret;
								
						bCommand[CMD_TRAINING] = TRUE;
					break;
				}
			return 0;
			
		case FSS_RECONS:
			switch (fs->state2)
				{
				case FS2_BEGIN:
					if (IsCommand(CMD_LOAD_EIGEN) == FALSE && IsCommand(CMD_TRAINING) == FALSE)
						{
						Msg(0, str_NOTYET_EIGEN, fs->num_line);
						return -1;
						}
					Msg(1, str_PROJECT_RECONSTRUCTION);
				   break;
				case FS2_PROCESSING:
					ret = GetReconstructionDB()->AddFace(fs->data);
					if (ret < 0)
						return ret;
					break;
				case FS2_END:
					Msg(-1, str_PROJECT_RECONSTRUCTION_DONE, GetReconstructionDB()->GetNumFace());
				
					ret = Reconstruct();
  					if (ret < 0)
						return ret;

					bCommand[CMD_RECONSTRUCTION] = TRUE;
					break;
				}
			return 0;
		
		case FSS_RECOG:
			switch (fs->state2)
				{
				case FS2_BEGIN:
					if (IsCommand(CMD_LOAD_EIGEN) == FALSE && IsCommand(CMD_TRAINING) == FALSE)
						{
						Msg(0, str_NOTYET_EIGEN, fs->num_line);
						return -1;
						}
					if (IsCommand(CMD_TRAINING) == FALSE && IsCommand(CMD_MEET) == FALSE)
						{
						Msg(0, str_NOTYET_MEET);
						return -1;
						}
					Msg(1, str_PROJECT_RECOGNIZE);
					break;
				case FS2_PROCESSING:
					ret = GetRecognitionDB()->AddFace(fs->data);
					if (ret < 0)
						return ret;
					break;
				case FS2_END:
					/* look at the first option which is the number of electors */
					int nVar = 1;
					BOOL bRecons = FALSE;
					char *str_option = fs->args;
					while (str_option[0] != 0 && isalnum(str_option[0]) == 0)
						str_option++;
					if (str_option[0] != 0)
						{											/*There are some option(s)*/
						if (isalnum(str_option[0]) != 0)
							{										/*The first option is a number, it is the number of eigenvectors*/
							nVar = atol(str_option);
							if (nVar == 0 && str_option[0] == 'R')
								{
								bRecons = TRUE;
								nVar = 1;
								}
							while (str_option[0] != 0 && isalnum(str_option[0]) == 0)
								str_option++;
							if (str_option[0] != 'R')
								bRecons = TRUE;
							}
						}
					Msg(-1, str_PROJECT_RECOGNIZE_DONE, GetRecognitionDB()->GetNumFace());
							
					ret = Recognize(nVar, bRecons);
					if (ret < 0)
						return ret;
							
					bCommand[CMD_RECOGNIZE] = TRUE;
					break;
				}
			return 0;
		
		case FSS_MEET:
			switch (fs->state2)
				{
				case FS2_BEGIN:
					if (IsCommand(CMD_LOAD_EIGEN) == FALSE && (CMD_TRAINING) == FALSE)
						{
						Msg(0, str_NOTYET_EIGEN, fs->num_line);
						return -1;
						}
					Msg(1, str_PROJECT_MEET);
					break;
				case FS2_PROCESSING:
					ret = GetMetDB()->AddFace(fs->data);
					if (ret < 0)
						return ret;
					break;
				case FS2_END:
					Msg(-1, str_PROJECT_MEET_DONE, GetMetDB()->GetNumFace());
					bCommand[CMD_MEET] = TRUE;
					break;
				}
			return 0;
			
		case FSC_LEIGEN:
			if (IsCommand(CMD_TRAINING) == TRUE)
				{
				Msg(0, str_ALREADY_TRAINING, fs->num_line);
				return -1;
				}
			Msg(1, str_PROJECT_LOAD_EIGEN);
					
			if (fs->args[0] == 0)
				{
				Msg(-1, str_ERR_WRONGARG, fs->num_line);
				return -1;
				}
						
			strcpy(EValName, fs->args);					/*Create the eigenvalue file name*/
			strcat(EValName, str_EVAL_FILENAME);
			strcat(EValName, str_EXT_TXT);
					
			strcpy(EVectName, fs->args);					/*Append the extension to the eigenvector file name*/
			strcat(EVectName, str_EXT_TXT);
					
			ret = GetEigenMat()->Load(EVectName);
			if (ret < 0)
				return -1;
			ret = GetEigenVal()->Load(EValName);
			if (ret < 0)
				return -1;
					
			lRow = pEVect->GetLi();;
			lCol = pEVect->GetCol();
			lEigen = lCol;
				
			GetEigenDB()->Copy(GetEigenMat(), GetEigenVal());
					
			Msg(-1, str_PROJECT_LOAD_EIGEN_DONE, GetEigenDB()->GetNumFace());
					
			bCommand[CMD_LOAD_EIGEN] = TRUE;
		   return 0;
	
		case FSC_LMEET:
			if (IsCommand(CMD_MEET) == TRUE)
				{
				Msg(0, "Inconcistency, you have already defined a MEET section and you put : %s !!!", fs->num_line);
				return -1;
				}
			Msg(1, "Load Meeting faces");
					
			if (fs->args[0] == 0)
				{
				Msg(-1, str_ERR_WRONGARG, fs->num_line);
				return -1;
				}
						
			ret = GetMetMat()->Load(fs->args);
			if (ret < 0)
				break;
					
			//GetMetDB()->Copy(GetMetMat(), NULL);
					
			Msg(-1, "%ld Meeting faces loaded", GetEigenDB()->GetNumFace());
					
			//bCommand[CMD_LOAD_MEET] = TRUE;
			return 0;
		
		case FSC_SEIGENDB:
			if (GetEigenDB() == NULL)
				{
				Msg(0, str_NOTYET_EIGEN);
				return -1;
				}
			Msg(1, str_PROJECT_SAVE_EIGEN_DB);
				
			if (fs->args[0] == 0)
				{
				Msg(-1, str_ERR_WRONGARG, fs->num_line);
				return -1;
				}
				
			strcpy(EVectName, fs->args);					/*Append the extension to the eigenvector file name*/
					
			ret = GetEigenDB()->Save(EVectName);
			if (ret < 0)
				return ret;
					
			Msg(-1, str_PROJECT_SAVE_EIGEN_DB_DONE, GetEigenDB()->GetNumFace());
			bCommand[CMD_SAVE_EIGEN_DB] = TRUE;
			return 0;
			
		case FSC_SEIGEN:
			if (GetEigenMat() == NULL || GetEigenVal() == NULL)
				{
				Msg(0, str_NOTYET_EIGEN);
				break;
				}
			Msg(1, str_PROJECT_SAVE_EIGEN);
				
			if (fs->args[0] == 0)
				{
				Msg(-1, str_ERR_WRONGARG, fs->num_line);
				return -1;
				}
				
			strcpy(EVectName, fs->args);					/*Append the extension to the eigenvector file name*/
				
			strcpy(EValName, fs->args);					/*Create the eigenvalue file name*/
			strcat(EValName, str_EVAL_FILENAME);
			strcat(EValName, str_EXT_TXT);
					
			strcpy(EVectName, fs->args);					/*Append the extension to the eigenvector file name*/
			strcat(EVectName, str_EXT_TXT);
					
			ret = GetEigenMat()->Save(EVectName);
			if (ret < 0)
				return ret;
			ret = GetEigenVal()->Save(EValName);
			if (ret < 0)
				return ret;
				
			Msg(-1, str_PROJECT_SAVE_EIGEN_DONE, GetEigenDB()->GetNumFace());
			bCommand[CMD_SAVE_EIGEN] = TRUE;
			return 0;
			
		case FSC_SCMP_MEET:
			if (GetMeetCmp() == NULL)
				{
				Msg(0, str_NOTYET_MEET);
				break;
				}
			Msg(1, str_PROJECT_SAVE_CMP_MEET);
				
			if (fs->args[0] == 0)
				{
				Msg(-1, str_ERR_WRONGARG, fs->num_line);
				return -1;
				}
				
			ret = GetMeetCmp()->Save(fs->args);
			if (ret < 0)
				return ret;
				
			Msg(-1, str_PROJECT_SAVE_CMP_MEET_DONE, GetMeetCmp()->GetCol());
			bCommand[CMD_SAVE_CMP_MEET] = TRUE;
			return 0;
			
		case FSC_SCMP_RECONS:
			if (GetReconstructionCmp() == NULL)
				{
				Msg(0, str_NOTYET_RECONSTRUCTION, fs->num_line);
				break;
				}
			Msg(1, str_PROJECT_SAVE_CMP_RECONSTRUCTION);
				
			if (fs->args[0] == 0)
				{
				Msg(-1, str_ERR_WRONGARG, fs->num_line);
				return -1;
				}
				
			ret = GetReconstructionCmp()->Save(fs->args);
			if (ret < 0)
				return ret;
				
			Msg(-1, str_PROJECT_SAVE_CMP_RECONSTRUCTION_DONE, GetReconstructionCmp()->GetCol());
			bCommand[CMD_SAVE_CMP_RECONSTRUCTION] = TRUE;
			return 0;
			
		case FSC_SCMP_RECOG:
			if (GetRecognitionCmp() == NULL)
				{
				Msg(0, str_NOTYET_RECOGNITION, fs->num_line);
				break;				
				}
			Msg(1, str_PROJECT_SAVE_CMP_RECOGNITION);
				
			if (fs->args[0] == 0)
				{
				Msg(-1, str_ERR_WRONGARG, fs->num_line);
				return -1;
				}
				
			ret = GetRecognitionCmp()->Save(fs->args);
			if (ret < 0)
				return ret;
				
			Msg(-1, str_PROJECT_SAVE_CMP_RECOGNITION_DONE, GetRecognitionCmp()->GetCol());
			bCommand[CMD_SAVE_CMP_RECOGNITION] = TRUE;
			return 0;
		
		case FSC_SREPORT:					
			Msg(1, str_PROJECT_SAVE_REPORT);
				
			if (fs->args[0] == 0)
				{
				Msg(-1, str_ERR_WRONGARG, fs->num_line);
				return -1;
				}
					
			SaveReport(fs->args);
				
			Msg(-1, str_PROJECT_SAVE_REPORT_DONE);
			bCommand[CMD_SAVE_REPORT] = TRUE;
			return 0;
		}
	
	/*Undefined line*/
	Msg(0, str_ERR_MISMATCH, fs->num_line);
	return -1;
	}

PFILECMD AppendCmd(PFILESTATE fs)
	{
	PFILECMD pnext = fs->pnext;
	PFILECMD pprev = NULL;
	while (pnext != NULL)
		{
		pprev = pnext;
		pnext = pnext->pnext;
		}
	pnext = (PFILECMD)_fmalloc(sizeof(FILECMD));
	if (pnext == NULL)
		return NULL;
		
	if (pprev == NULL)
		/*fs->pnext = pnext*/;
	else
		pprev->pnext = pnext;
	
	pnext->pnext = NULL;
	
	return pnext;
	}

void FreeCmd(PFILESTATE fs)
	{
	PFILECMD pnext2, pnext = fs->pnext;
	while (pnext != NULL)
		{
		pnext2 = pnext->pnext;
		_ffree(pnext);
		pnext = pnext2;
		}
	}

⌨️ 快捷键说明

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