1.5 - Ajouter le code de traitement


Ecriture du programme

Dans cette partie nous allons ecrire le code C en respectant le decoupage vu precedemment:

Pour le threshold on transcrit l'algorythme propose precedemment:

Debut du CODE.


/* -main_variable_list */

  IMAGE img;         /* pour contenir toutes les donnees d'une image */
  unsigned char *pt; /* pointeur pour les points de l'image*/
  int i;             /* indice du point courant */

/* -main_variable_list_end */

/* -main_before_lib_call */

  /* lecture de l'image et test de reussite */
  if ((img = ReadImage( clui_info->i_file )) == NULL) {
    fprintf(stderr,"threshold: Erreur de lecture sur le fichier %s\n",
                    clui_info->i_file);
    exit(1);
  }

/* verfication du type de l'image */
  if (img->depth != 8) {
    /* point code sur 8 bits ? */
    fprintf(stderr,"threshold: Les pixels de l'image %s doivent etre
                    codees sur 8 bits\n", clui_info->i_file);
    exit(1);
  }

  if (img->nplane != 1) {
    /* image 2D ? */
    fprintf(stderr,"threshold: L'image %s ne doit avoir qu'un seul
                    plan (2D) et elle en a %d\n", clui_info->i_file,
                    img->nplane);
    exit(1);
  }

/* -main_before_lib_call_end */

/* -main_library_call */
  /* Traitement */
  pt = img->imagedata; /* fait pointer sur les donnees de l'image */
  for (i = 0 ; i < (img->ncol * img->nlig) ;i++) {
    if (*pt > clui_info->level_int) /* test du seuilhaut */
      *pt = 255; /* allumer le point courant */
    else
      *pt = 0; /* etteindre le point courant */
    pt++; /* point suivant *
  }
/* -main_library_call_end */

/* -main_after_lib_call */
  /* sauvegarde de l'image + test de reussite */
  if (!WriteImage( clui_info->o_file, img )) {
    fprintf(stderr,"threshold: Erreur d'ecriture du fichier %s",clui_info->o_file,);
    exit(1);
  }
/* -main_after_lib_call_end */


Fin du CODE.


Aller a l'etape suivante, ou revenir a l'etape precedente

Des questions ? Eric Llorens.