int main()

in lear_gist-1.2/compute_gist.c [57:112]


int main(int argc,char **args) {

  const char *infilename="/dev/stdin";
  int nblocks=4;
  int n_scale=3;
  int orientations_per_scale[50]={8,8,4};


  while(*++args) {
    const char *a=*args;

    if(!strcmp(a,"-h")) usage();
    else if(!strcmp(a,"-nblocks")) {
      if(!sscanf(*++args,"%d",&nblocks)) {
        fprintf(stderr,"could not parse %s argument",a);
        usage();
      }
    } else if(!strcmp(a,"-orientationsPerScale")) {
      char *c;
      n_scale=0;
      for(c=strtok(*++args,",");c;c=strtok(NULL,",")) {
        if(!sscanf(c,"%d",&orientations_per_scale[n_scale++])) {
          fprintf(stderr,"could not parse %s argument",a);
          usage();
        }
      }
    } else {
      infilename=a;
    }
  }

  color_image_t *im=load_ppm(infilename);

  float *desc=color_gist_scaletab(im,nblocks,n_scale,orientations_per_scale);

  int i;

  int descsize=0;
  /* compute descriptor size */
  for(i=0;i<n_scale;i++)
    descsize+=nblocks*nblocks*orientations_per_scale[i];

  descsize*=3; /* color */

  /* print descriptor */
  for(i=0;i<descsize;i++)
    printf("%.4f ",desc[i]);

  printf("\n");

  free(desc);

  color_image_delete(im);

  return 0;
}