Projet en langage C


Précédent   Bladi.net > Loisirs & Entraides > Informatique


Réponse
 
Outils de la discussion Modes d'affichage
  #1  
Vieux 12/03/2008, 23h00
 
Date d'inscription: mars 2008
Messages: 3
Par défaut Projet en langage C

J'ai un projet de C à faire sur la création d'un environnement logiciel de traitement d'images. En revanche l'énoncé est un peu long, je ne peux alors pas le mettre sur le forum. Si quelqu'un avait la gentillesse de m'aider. Je peux envoyer l'énoncé par mail. Merci d'avance
Réponse avec citation
  #2  
Vieux 12/03/2008, 23h09
Avatar de mkindy
Monster
 
Date d'inscription: mars 2005
Âge: 26
Messages: 4 896
Entrées dans le blog: 2
Par défaut Re : Projet en langage C

Mets le plutôt sur le forum, ça aidera pas mal de monde
Réponse avec citation
  #3  
Vieux 13/03/2008, 04h51
Avatar de farid_h
 
Date d'inscription: juillet 2006
Messages: 4 990
Par défaut Re : Projet en langage C

Citation:
Envoyé par gamblers Voir le message
J'ai un projet de C à faire sur la création d'un environnement logiciel de traitement d'images. En revanche l'énoncé est un peu long, je ne peux alors pas le mettre sur le forum. Si quelqu'un avait la gentillesse de m'aider. Je peux envoyer l'énoncé par mail. Merci d'avance
Je suppose que tu peux creer un projet sur sourceforge.net et donner l'adresse de ce projet ici? Comme ca on pourra tous participer...
Réponse avec citation
  #4  
Vieux 13/03/2008, 12h13
Avatar de Scorfano
 
Date d'inscription: juin 2006
Messages: 1 731
Par défaut Re : Projet en langage C

Citation:
Envoyé par mkindy Voir le message
Mets le plutôt sur le forum, ça aidera pas mal de monde
Et surtout qu'il aura plus de proposition
Réponse avec citation
  #5  
Vieux 13/03/2008, 17h22
 
Date d'inscription: mars 2008
Messages: 3
Par défaut Re : Projet en langage C

En langage C sous DevCpp
« ProjetCTrIm »
-Deux répertoires : « Projet » contenant les projets DevCpp ainsi que les éxécutables correspondants
« src » contenant les fichiers sources(.c) inclure(.h) développés ainsi que les objets (.o) génrérés pas DevCpp.

-différents fichiers : struct.h fichier comportant les structures de données utilisées ainsi que les macros d’accès aux données.
Utils.c et utils.h fichier qui contiennent respectivement les fonctionnalités de l’environnement logiciel, traduites sous form de fonctions en langage C (utils.c) et les prototypes de ces fonctions (utils.h)
Oper.c sorte d’interface entre l’utilisateur et l’ordinateur, dont nous développerons les fonctionnalités plus loin, comportant le programme principal « main() » et appelant la fonction de l’opérateur
LibOper.c et LibOper.h fichiers comportant pour l’un les définitions, pour l’autre les protypes des fonctions en langage C réalisant la fonctionnalité de l’Opérateur.



1) Ecrire dans le fichier « utils.c » la fonction « LecureEntetePGM ()» de prototype :int LectureEntetePGM (File *fp, int *pnlig, int *pncol) ;
Retour : 0 : fichier non PGM ; 1 : OK
Pnlig : pointeur sur le nombre de ligne
Pncol : pointeur sur le nombre de colonnes

Qui teste le « magic number » puis en cas de fichier « .pgm » transmet en paramètres le nombre de lignes, de colonnes, et en valeur de retour un code d’erreur. Attention cette fonction devra également lire la valeur 255, ainsi que les caractères de contrôle suivants !

2) Dans le fichier Struct.h définir le structure image comportant les champs suivants :
Un entier : nlig : nombre de lignes
Un entier : ncol :nombre de colonnes
Un octet non signé : prof :la profondeur, le nombre d’octets par pixel
Un pointeur sur octet non signé : ptim : un pointeur sur les données (valeurs des pixels de l’image)

3) Dans le même fichier nous allons maintenant écrire les macros d’accès. A l’aide du modèle de la macro NLIG() ci-dessous définir les macros NCOL() et PROF()
#define NLIG (XX) ((XX)->nlig) /*pour obtenir le nombre de lignes*/

La macro crea_IMAGE() dont l’expression est donnée ci-dessous réalise l’allocation dynamique de mémoire de la variable de type IMAGE. Elle est ç inclure dans le fichier struct.h
#define crea_IMAGE(XX) ((XX) = (Image *)malloc(sizeof(IMAGE)))

4) Commenter la macro « crea_IMAGE (XX)»notamment au niveau des types et changements de types

5) Ecrire dans le fichier « utils.c » la fonction « CreationImage() » de prototype ci-dessous
Int CreationImage(IMAGE *image, int nlig, int ncol, unsigned char prof)
Retour : 0 : Erreur de creation ; 1 : OK
nlig pointeur sur le nombre de lignes
ncol : pointeur sur le nombre de colonnes
prof : profondeur

remarque : les valeurs 1 et 3 de la profondeur seront prises en compte

6) Ecrire dans le fichier « utils.c » la donction « LectureImage() » de prototype ci-dessous
Int LectureImage (FILE *fp, IMAGE *image)
Retour : 0 : erreur de lecture ; 1 : OK
Arguments : fp : descripteur de fichier ; image : pointeur sur la variable structurée

remarque : les valeurs 1 et 3 de la profondeur seront prises en compte


7) Réaliser ensuite les fonctionnalités manquantes parmi :
-Validation du bon nombre de paramètres transmis sinon envoi du « mode d’emploi »
-Récupération des paramètres transmis et ouverture des fichier images source : imsrc.pgm et résultat : imres.pgm
-Lecture de l’entête du fichier image source :taille de l’image
-Création des structures images : entête = données
-Lecture des données de l’image source
-Appel de l’opérateur
-Enregistrement de l’entête du fichier image
« EcritureEntetePGM() » dans le fichier « utils.c » et de prototype suivant :
Int EcritureImage (FILE *fp, IMAGE *image)
Retour : 0 : Erreur d’Ecriture ; 1 : OK
Fp : description de fichier
Image : pointeur sur la variable structurée

remarque : les valeurs 1 et 3 de la profondeur seront prises en compte


-Enregistrement des données du fichier image « EcritureImage() »
-Fermeture des fichiers
-Libération de la mémoire allouée (données et variables structurées)
« LibereImage() » dans le fichier « utils.c » et de prototype suivant :
Void LibereImage(IMAGE *image)
Image : pointeur sur la variable structurée

8) Valider l’ensemble en écrivant dans le fichier « fpres » l’image « imsrc »
Réponse avec citation
  #6  
Vieux 17/03/2008, 15h18
Avatar de farid_h
 
Date d'inscription: juillet 2006
Messages: 4 990
Par défaut Re : Projet en langage C

Citation:
Envoyé par gamblers Voir le message
1) Ecrire dans le fichier « utils.c » la fonction « LecureEntetePGM ()» de prototype :int LectureEntetePGM (File *fp, int *pnlig, int *pncol) ;
Retour : 0 : fichier non PGM ; 1 : OK
Pnlig : pointeur sur le nombre de ligne
Pncol : pointeur sur le nombre de colonnes
Bon, j'ai pas tellement de temps pour l'instant, mais je vois qu'il s'agit d'images PGM. Pour ca, je conseille de reutiliser la bibliotheque libpgm du toolkit netpbm:

http://netpbm.sourceforge.net/

Tu pourras economiser enormement de temps... Voila par exemple le pgm.h de cette bibliotheque, pour te donner une idee:

Citation:
/* pgm.h - header file for libpgm portable graymap library
*/

#ifndef _PGM_H_
#define _PGM_H_

#include "pbm.h"

/* The following definition has nothing to do with the format of a PGM file */
typedef unsigned int gray;

/* Since April 2000, we are capable of reading and generating raw
(binary) PGM files with maxvals up to 65535. However, before that
the maximum (as usually implemented) was 255, and people still want
to generate files with a maxval of no more than 255 in most cases
(because then old Netpbm programs can process them, and they're
only half as big).

So we keep PGM_MAXMAXVAL = 255, even though it's kind of a misnomer.

Note that one could always write a file with maxval > PGM_MAXMAXVAL and
it would just go into plain (text) format instead of raw (binary) format.
Along with the expansion to 16 bit raw files, we took away that ability.
Unless you specify 'forceplain' on the pgm_writepgminit() call, it will
fail if you specify a maxval > PGM_OVERALLMAXVAL. I made this design
decision because I don't think anyone really wants to get a plain format
file with samples larger than 65535 in it. However, it should be possible
just to increase PGM_OVERALLMAXVAL and get that old function back for
maxvals that won't fit in 16 bits. I think the only thing really
constraining PGM_OVERALLMAXVAL is the size of the 'gray' data structure,
which is generally 32 bits.
*/

#define PGM_OVERALLMAXVAL 65535
#define PGM_MAXMAXVAL 255


/* Magic constants. */

#define PGM_MAGIC1 'P'
#define PGM_MAGIC2 '2'
#define RPGM_MAGIC2 '5'
#define PGM_FORMAT (PGM_MAGIC1 * 256 + PGM_MAGIC2)
#define RPGM_FORMAT (PGM_MAGIC1 * 256 + RPGM_MAGIC2)
#define PGM_TYPE PGM_FORMAT

/* For the alpha-mask variant of PGM: */
#define PGM_TRANSPARENT 0

/* Macro for turning a format number into a type number. */

#define PGM_FORMAT_TYPE(f) ((f) == PGM_FORMAT || (f) == RPGM_FORMAT ? PGM_TYPE : PBM_FORMAT_TYPE(f))


/* Declarations of routines. */

void pgm_init ARGS(( int* argcP, char* argv[] ));

#define pgm_allocarray( cols, rows ) ((gray**) pm_allocarray( cols, rows, sizeof(gray) ))
#define pgm_allocrow( cols ) ((gray*) pm_allocrow( cols, sizeof(gray) ))
#define pgm_freearray( grays, rows ) pm_freearray( (char**) grays, rows )
#define pgm_freerow( grayrow ) pm_freerow( (char*) grayrow )

gray** pgm_readpgm ARGS(( FILE* file, int* colsP, int* rowsP, gray* maxvalP ));
void pgm_readpgminit ARGS(( FILE* file, int* colsP, int* rowsP, gray* maxvalP, int* formatP ));
void pgm_readpgmrow ARGS(( FILE* file, gray* grayrow, int cols, gray maxval, int format ));

void pgm_writepgm ARGS(( FILE* file, gray** grays, int cols, int rows, gray maxval, int forceplain ));
void pgm_writepgminit ARGS(( FILE* file, int cols, int rows, gray maxval, int forceplain ));
void pgm_writepgmrow ARGS(( FILE* file, gray* grayrow, int cols, gray maxval, int forceplain ));


void
pgm_nextimage(FILE * const file, int * const eofP);

void
pgm_check(FILE * const file,
enum pm_check_type const check_type,
int const format,
int const cols,
int const rows,
gray const maxval,
enum pm_check_code * const retval_p);

#endif /*_PGM_H_*/
Bon courage!
Réponse avec citation
  #7  
Vieux 18/03/2008, 00h32
Avatar de Scorfano
 
Date d'inscription: juin 2006
Messages: 1 731
Par défaut Re : Projet en langage C

Citation:
Envoyé par farid_h Voir le message
Bon, j'ai pas tellement de temps pour l'instant, mais je vois qu'il s'agit d'images PGM. Pour ca, je conseille de reutiliser la bibliotheque libpgm du toolkit netpbm:

http://netpbm.sourceforge.net/

Tu pourras economiser enormement de temps... Voila par exemple le pgm.h de cette bibliotheque, pour te donner une idee:



Bon courage!
Bonsoir,
Il y a aussi la GD librairie pour le traitement d'image en général
www.boutell.com/gd/
Elle pourra être utilisée avec plusieurs langages C, Perl, PHP...en plus OpenSource
Mais je crois qu'il veut créer ses propres structures
Au passage merci pour le lien
Réponse avec citation
  #8  
Vieux 18/03/2008, 00h50
Avatar de mkindy
Monster
 
Date d'inscription: mars 2005
Âge: 26
Messages: 4 896
Entrées dans le blog: 2
Par défaut Re : Projet en langage C

@Scorfano et Farid, je crois que le but du programme est d'écrire des fonctions de lecture de fichiers PGM et non d'utiliser les fonctions déjà existantes.

@ gamblers: j'ai pas bcp de temps là mais j'y reviendrai incha'allah.
Réponse avec citation
  #9  
Vieux 18/03/2008, 01h02
Avatar de farid_h
 
Date d'inscription: juillet 2006
Messages: 4 990
Par défaut Re : Projet en langage C

Citation:
Envoyé par mkindy Voir le message
@Scorfano et Farid, je crois que le but du programme est d'écrire des fonctions de lecture de fichiers PGM et non d'utiliser les fonctions déjà existantes.
Ah, c'est dans un but pedagogique? Okay. La solution (le code en C) se trouve bien sur dans la libpgm, mais dans ce cas la, il vaut mieux ne pas tricher et y jetter un coup d'oeil.

Mais si c'est pour un code destine a la production, il vaut vraiment mieux reutiliser un code qui a ete scrupuleusement scrutine que de reinventer la roue. C'est tres facile d'introduire des off-by-one bugs et autres erreurs dans ce genre de code; et peng! on a une vulnerabilite aux virus de plus.
Réponse avec citation
  #10  
Vieux 18/03/2008, 01h21
Avatar de Scorfano
 
Date d'inscription: juin 2006
Messages: 1 731
Par défaut Re : Projet en langage C

Citation:
Envoyé par mkindy Voir le message
@Scorfano et Farid, je crois que le but du programme est d'écrire des fonctions de lecture de fichiers PGM et non d'utiliser les fonctions déjà existantes.
C'est ce que je pense aussi, les fonctions de bases et l'interface graphique
Réponse avec citation
Réponse

Outils de la discussion
Modes d'affichage

Règles de messages
Vous ne pouvez pas créer de nouvelles discussions
Vous ne pouvez pas envoyer des réponses
Vous ne pouvez pas envoyer des pièces jointes
Vous ne pouvez pas modifier vos messages

BB code is oui
Les smileys sont activés : oui
La balise [IMG] est activée : non
Le code HTML peut être employé : non
Trackbacks are non
Pingbacks are non
Refbacks are non
Navigation rapide

Discussions similaires
Discussion Auteur Forum Réponses Dernier message
[Sujet unique: Questions - réponses] Forum Islam 5904 08/10/2008 19h01
Maroc: Reporters sans Frontières dénonce un projet de code de la presse kamomille Forum Culturel 1 18/07/2007 12h08
Le projet FèsShore sur les rails petitbijou Actualités marocaines 0 22/06/2007 21h27
Projet d’autonomie : La douche froide ONU Saife Actualités marocaines 10 03/05/2007 15h19
Modélisation en langage C turbo_chess Informatique 3 09/02/2007 13h11



Fuseau horaire GMT +2. Il est actuellement 23h23.


.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33