[C] image binarisée à l'envers

Fermé
e29 Messages postés 57 Date d'inscription mercredi 15 février 2006 Statut Membre Dernière intervention 22 juin 2006 - 22 févr. 2006 à 15:19
 kiwi2008 - 29 mars 2008 à 19:38
Bonjour,

Je travaille sur un code permettant de binariser une image , voici ce code :

#include <stdio.h>
#include <stdlib.h>
#include <math.h>


#define largeurimage 120
#define hauteurimage 80


int main(){

FILE * fichier;
// imageBMP est un tableau contenant les valeur R,G,et B de chaque pixel
unsigned char imageBMP[3*largeurimage*hauteurimage];
int *tempimBMP;
int **image;
unsigned char tmp[501];
int somme=0;
int seuil;

int i,j;



//Allocation mémoire de l'image en niveau de gris

tempimBMP=(int*)malloc(largeurimage*hauteurimage*sizeof(int));

//Récupération de l'image

fichier=fopen("test.bmp","rb");
if(!fichier)
{
printf ("Probleme d'ouverture du fichier image\n");
return 0;
}

fread (&tmp,54,1,fichier);
fread (&imageBMP,3*hauteurimage*largeurimage,1,fichier);//on met le fichier image dans le tableau
fclose(fichier);


//Passage en niveau de gris

for(i=0;i<largeurimage*hauteurimage;i++)
{
//imageBMP[i*3] sont les composantes red dans le tableau (RGBRGBRGB...)(0,3,6...)
//imageBMP[i*3+1] sont les composantes vertes...

tempimBMP[i]=(int)(0.3*imageBMP[i*3]+0.59*imageBMP[i*3+1]+0.11*imageBMP[i*3+2]);

}


//Allocation mémoire de l'image à tester

image=(int**)malloc(largeurimage*sizeof(int*));

for (i=0;i<hauteurimage;i++)
{
image[i]=(int*)malloc (largeurimage*sizeof(int));
}

//Initialisation de l'image à tester en niveau de gris (0-256)

for (i=0;i<hauteurimage;i++)
{
for(j=0;j<largeurimage;j++)
{
image[i][j]=tempimBMP[j+i*largeurimage];
}
}

//Calcul du seuil de l'image pour la transformation en binaire

for(i=0;i<hauteurimage;i++)
{
for (j=0;j<largeurimage;j++)
{
somme+=image[i][j];
}
}
seuil=somme/(hauteurimage*largeurimage);

//Passage en binaire

for(i=0;i<hauteurimage;i++)
{
for (j=0;j<largeurimage;j++)
{
if(image[i][j]<seuil)
{
image[i][j]=1;
}
else
{
image[i][j]=0;

}
}
}

for(i=0;i<hauteurimage;i++)
{
for (j=0;j<largeurimage;j++)
{
printf("%d",image[i][j]);
}

}

return 0;

}

Le problème c'est que lors de l'execution il m'affiche l'image binarisée mais à l'envers. Je n'arrive pas à trouver pourquoi, quelqu'un peut-il m'aider svp??

1 réponse

bjr;si qqun possede un code qui binarise une image sous builder c++ aider moi svp...........
0