[C] image binarisée à l'envers
e29
Messages postés
57
Date d'inscription
Statut
Membre
Dernière intervention
-
kiwi2008 -
kiwi2008 -
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??
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??
A voir également:
- [C] image binarisée à l'envers
- Ecran a l'envers - Guide
- Slash à l'envers ✓ - Forum MacOS
- Écriture à l'envers miroir - Guide
- Supprimez les composantes rouge et verte de cette image. quel mot apparaît ? - Forum Word
- V à l'envers ✓ - Forum Word