0/5 (13 avis)
Vue 14 742 fois - Téléchargée 902 fois
#include <stdio.h> #include <stdlib.h> unsigned char ** allocation(int NBL, int NBC) { int i, j; unsigned char **image; image = (unsigned char**)calloc(NBL,sizeof(unsigned char **)); if (image == NULL) return(NULL); for (i=0;i<NBL;i++) { image[i] = (unsigned char*)calloc(NBC,sizeof(unsigned char)); if (image[i] == NULL) { for (j=0;j<i;j++) free(image[j]); free(image); return(NULL); } } return(image); } void desallocation(unsigned char **image, int NBL) { int i; if (image == NULL) exit(0); for (i=0;i<NBL;i++) free(image[i]); free(image); } void LireImageRAW(unsigned char** image, int NBL, int NBC) { char nom_image[256]; FILE * fic_image; int i, j; getchar(); printf("Nom de l'image a ouvrir : \n"); gets(nom_image); fic_image = fopen(nom_image,"rb"); if (fic_image == NULL) { printf("Erreur a l'ouverture de l'image ...\n"); exit(0); } else printf("Image ouverte avec succes ...\n"); for(i=0;i<NBL;i++) for(j=0;j<NBC;j++) fread(&image[i][j],1,1,fic_image); fclose(fic_image); } void EcrireImageRAW(unsigned char** image, int NBL, int NBC) { char nom_image[256]; FILE * fic_image; int i, j; getchar(); printf("Nom de l'image a ecrire : \n"); gets(nom_image); fic_image = fopen(nom_image,"wb"); if (fic_image == NULL) { printf("Erreur a la creation de l'image ...\n"); exit(0); } else printf("Image cree avec succes ...\n"); for(i=0;i<NBL;i++) for(j=0;j<NBC;j++) fwrite(&image[i][j],1,1,fic_image); fclose(fic_image); } void SeuilImageRAW(unsigned char** image, int NBL, int NBC, int seuil) { int i, j; for(i=0;i<NBL;i++) for(j=0;j<NBC;j++) { if (image[i][j] < seuil) image[i][j] = 0; else image[i][j] = 255; } } int main() { unsigned char ** image; int NBL, NBC, seuil; printf("Nombre de lignes de l'image :\n"); scanf("%d",&NBL); printf("Nombre de colonnes de l'image :\n"); scanf("%d",&NBC); image = allocation(NBL,NBC); if (image != NULL) { LireImageRAW(image,NBL,NBC); printf("Seuil a appliquer : \n"); scanf("%d",&seuil); SeuilImageRAW(image,NBL,NBC,seuil); EcrireImageRAW(image,NBL,NBC); desallocation(image,NBL); } else { printf("Erreur lors de l'allocation memoire! Sortie du programme.\n"); return 1; } return 0; }
24 déc. 2010 à 19:46
12 avril 2007 à 16:53
Il faudrait que j'ouvre des fichiers raw 16 bits. Aussi, pour voir le résultat j'ai photoshop et je ne peux le lire l'image que quand je place l'option macintoch.(la seconde option étant IBM PC)
Est ce que tu connais la différence entre l'ouverture Macintoch et IBM PC?
Pour mon image, je la lis octet par octet en commencant par le MSB puis par le LSB. Cependant, cette image est largement plus bruité par rapport à ce que photoshop me donne.
Est ce que tu pourrais me l'expliquer?
13 mai 2006 à 16:20
23 mai 2005 à 17:03
6 mai 2004 à 11:34
je voulais juste savoir, je commence juste dans le traitement d'images et je n'ai pas fait d'etudes d'info, mais je cherche un code qui permet de transformer mes images.raw en image.pgm, pour que je puisse les traiter.
En tout cas le code de lecture et d'ecriture des .raw est tres bien, merci.
Si vous pouviez m'aider
merci d'avance
julie
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.