Exemple #1
0
int main(int argc, char *argv[])
{
    int load_stuff = 0; //Set to 0 if training database needs to be created
    //int pass = 0;
    //int fail = 0;

    database_t *D;
	MATRIX ** M;

    if (load_stuff == 0) {
		D = CreateDatabase(TrainDatabasePath);
		M = FisherfaceCore(D);

        // save to binary file
        // save output_faces.mat T m V_PCA V_Fisher ProjectedImages_Fisher;

        // Recognition?

		DestroyFisher(M);
		DestroyDatabase(D);

		return 0;
    } else {
    	fprintf(stderr, "Load the saved database");
        // read binary file
        // load output_faces.mat;
        return 1;
    }
}
Exemple #2
0
int DeleteListEntry(TDbmListEntry *list, char *entryname)
{
  int hash_value;
  TDbmListEntry *node;
  int found;
  TDbmListEntry *before;
  TDbmListEntry *after;
  int i,j;

  if(list==NULL || list->child==NULL || entryname==NULL) return(-1);

  hash_value = HashValueGenerator(entryname);

  node = list->child[hash_value];
  if(node==NULL) return(-1);

  found = 0;
  before = NULL;
  after = node->next;

  while(!found && node!=NULL) {

    if(strcmp(node->key, entryname)==0) /* we've found the entry */
      found = 1;

    if(!found) { 
      before = node;
      node=node->next;
    }

    after = node->next;

  }

  if(node==NULL) return(-1);

  /* remove the list order entry */

  i=0;
  while(node!=list->order[i]) i++;

  for(j=i; j< list->current_order-1; j++) 
    list->order[j] = list->order[j+1];

  list->order[list->current_order-1] = NULL;

  list->current_order--;
  
  /* delete the entry */

  free(node->key);
  if(node->comment!=NULL) free(node->comment);
  
  switch(node->entry_type) {

  case DBM_ENTRY_VAR_STRING :
  case DBM_ENTRY_VAR_IDENT :
    if(node->value.str_val!=NULL ) free(node->value.str_val);
    break;

  case DBM_ENTRY_LIST :
    DestroyDatabase(node);
    free(node->child);
    free(node->order);
    break;
  }

  /* update the chained list */

  if(before!=NULL)
    before->next = after;
  else list->child[hash_value] = after;

  return(1);

}
Exemple #3
0
int DestroyDatabase(TDbmListEntry *list)
{
  int i;
  TDbmListEntry *node;
  int ret;

  for(i=0; i< list->current_order; i++) { 
    node = list->order[i];
	
    switch(node->entry_type) {

    case DBM_ENTRY_VAR_INT :
      
      if(node->comment!=NULL) free(node->comment);

      free(node->key);
	  
      break;
	  
    case DBM_ENTRY_VAR_REAL :
	
      if(node->comment!=NULL) free(node->comment);

      free(node->key);
		  
      break;


    case DBM_ENTRY_VAR_STRING :

      if(node->comment!=NULL) free(node->comment);

      free(node->key);
      free(node->value.str_val);
	  
      break;

    case DBM_ENTRY_VAR_IDENT :

      if(node->comment!=NULL) free(node->comment);

      free(node->key);
      free(node->value.str_val);
	  
      break;

    case DBM_ENTRY_VAR_BOOL :
	  

      if(node->comment!=NULL) free(node->comment);
	  
      free(node->key);

      break;
  
    case DBM_ENTRY_LIST :

      if(node->comment!=NULL) free(node->comment);

      free(node->key);
  
      ret = DestroyDatabase(node);
      if(ret==-1) {
	RaiseError(DBM_DESTROY);
	return(-1);
      }

      free(node->child);

      free(node->order);

      break;

    default : 
      RaiseError(DBM_DESTROY);
      return(-1);
    }

  }
  
  return(0);

}