IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C Discussion :

flip vertical d'une matrice


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Avril 2007
    Messages
    21
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 21
    Par défaut flip vertical d'une matrice
    Bonjour mon problème consiste à créer une fonction que fasse le flip vertical d'une image .ppm! Et donc pour cela je dois lire les informations de la matrice et puis ensuit trouver la fonction qui me fasse le flip et ensuit me sauvegarde le résultat dans un nouveau fichier! J'ai essaillé et j'ai presque réussi mais j'ai un ptit soucis! Le flip fonctionne mais les couleurs de l'image sont très bizarre! quand j'ouvre la photo de départ elle est normale on reconnait l'image et aprèsle flip l'image inverse est un peu noir et il me semble que le nombre de pixels est inférieur! Ca serais très gentil si vous pourriez m'aider car je dois terminer ce travail pour lundi en 8! Merci d'avance!

    La programation doit etre faite en language C et le compileur s'appelle Crimson Editor!
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
     
    #include <stdio.h>
    void main() {
    	FILE *fp;
    	int i, j,b,temp;
    	int a[324][195];
    	fp=fopen("moulin1.ppm","r");
    	for (i = 1; i < 324; i++)
    		{
    			for (j = 1; j < 195; j++)
    			{
    			fscanf(fp,"%d",&a[i][j]);
     
    		}
    		}
    		fclose(fp);
    		/*fp=fopen("Moulin2.ppm","w");
    		fprintf(fp,"P");
    		for (i = 1; i < 324; i++)
    		{
    			for (j = 1; j < 195; j++)
    			fprintf(fp,"%d ", a[i][j]);
    		 fprintf(fp,"\n");
     
    		}
    		fclose(fp);*/
            fp=fopen("fliphorizontal.ppm","w");
    		fprintf(fp,"P3\n");
    		fprintf(fp,"65 108\n");
    		fprintf(fp,"255\n");
    		for (i = 1; i < 324; i++)
    		/*{if (i == 1)
    		{for (b =5; b < 195; b++)
    		    j=324-i;
    			temp=a[i][b];
    	        a[i][b]=a[j][b];
    	        a[j][b]=temp;
    			fprintf(fp,"%d ", a[i][b]);
    			fprintf(fp,"\n");
    		    fprintf(fp,"%d ", a[j][b]);
    		    fprintf(fp,"\n");}
    		else*/ {for (b =1; b < 195; b++)
    		    {j=324-i;
    			    if (i<j)
    		    {
    			temp=a[i][b];
    	        a[i][b]=a[j][b];
    	        a[j][b]=temp;
    			fprintf(fp,"%d ", a[j][b]);
    			fprintf(fp,"%d ", a[i][b]);}
    	else break;}
    		}
    		fclose(fp);
    		}

  2. #2
    Membre éclairé
    Avatar de JMLLB
    Inscrit en
    Septembre 2006
    Messages
    285
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 285
    Par défaut
    Juste une question basique, lorsque tu supprimes la partie "flip" de ton programme est-ce que tu obtiens une image identique à l'originale où est-ce que le couleurs sont déjà "très bizarres".
    Ca permettrait déjà de savoir si ton problème viens du retournement ou du formatage.

    Je ne comprend pas trop pourquoi tu retouches ton tableau lors des écritures plutôt que de l'utiliser tel quel en changeant juste l'ordre des accès.
    Ni pourquoi tu as 2 prints par élément du tableau: ton fichier de sortie est-il de la même taille que ton fichier d'entrée?

  3. #3
    Membre éclairé
    Avatar de JMLLB
    Inscrit en
    Septembre 2006
    Messages
    285
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 285
    Par défaut
    Autre remarque:

    Je précise que je ne connais le format de fichier "ppm", mais a priori si tu as une entete dans ton fichier de sortie:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
            fp=fopen("fliphorizontal.ppm","w");
    		fprintf(fp,"P3\n");
    		fprintf(fp,"65 108\n");
    		fprintf(fp,"255\n");
    il doit sans doute y avoir une entete à traiter (au moins à skipper) dans ton fichier d'entrée.

  4. #4
    Membre averti
    Inscrit en
    Avril 2007
    Messages
    21
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 21
    Par défaut rebonjour
    Et bien tout d'abord je tiens à vous remercier d'avoir chercher à comprendre mon problème et celui ci est en fait que je ne suis pas un pro de la programmation! :-( Je ne fais quede débuter et oui on a déjà un tel projet à réaliser pour lundi le 16 avril! Et pour le moment j'ai essaillé en cette direction mais il y a encore quelques problèmes mais si vous sauriez me suggérer une solution ou une autre fonction me donnant le meme résultat qui est un flip vertical en language C ca serait trop gentil et e vous en serait très reconnaissant! Je vais regarder une fois mtn ce que vous avez dirt à propos de la suppression et des tableaux mais je ne sais pas si je vais y arriver! Le problème pour le moment est que le fichier est tj aussi grand, il est bien inversé car on reconnait la meme image mais juste que les couleurs ne correspondent pas et il me semble aussi une intensité moins forte de pixels!

  5. #5
    Membre éclairé
    Avatar de JMLLB
    Inscrit en
    Septembre 2006
    Messages
    285
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 285
    Par défaut
    Juste une remarque: est-ce voulu d'initialiser tes compteurs avec 1 au lieu de 0?

  6. #6
    Membre averti
    Inscrit en
    Avril 2007
    Messages
    21
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 21
    Par défaut Recoucou
    bonjour ben c'est voulu oui et non! D'après je pensais que ce serrait pas mal d'initaliser à 0! Mais mon problème est mtn dans le flip horizontal! Hier soir j'ai encore travailler et chercher avec un ami et on a plus ou moins arrivé à un résultat concluant pour le flip vertical! Mais on n'arrive pas le horizontal! :-(

Discussions similaires

  1. Fonction flip Vertical pour une matrice
    Par romain1986 dans le forum SDL
    Réponses: 5
    Dernier message: 05/04/2007, 11h17
  2. [JTable] remplir avec une matrice
    Par ybdz dans le forum Composants
    Réponses: 3
    Dernier message: 08/12/2004, 21h03
  3. Recherche des coefficients d'une matrice 3x3
    Par colorid dans le forum Algorithmes et structures de données
    Réponses: 6
    Dernier message: 25/11/2004, 16h52
  4. Separateur vertical dans une ListCtrl
    Par jul54 dans le forum MFC
    Réponses: 2
    Dernier message: 15/01/2004, 15h33
  5. Déclarer une matrice
    Par joy dans le forum C
    Réponses: 7
    Dernier message: 09/12/2002, 00h42

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo