[C] charger plusieurs images

cs_elo29 Messages postés 70 Date d'inscription mardi 7 février 2006 Statut Membre Dernière intervention 26 avril 2006 - 14 avril 2006 à 14:12
cs_elo29 Messages postés 70 Date d'inscription mardi 7 février 2006 Statut Membre Dernière intervention 26 avril 2006 - 18 avril 2006 à 17:45
Bonjour!

Je travaille avec visual C++ mais mon programme est écrit en C. Le but de mon programme est de charger une image , d'en extraire une certaine matrice après plusieurs calculs sur les pixels puis de multiplier cette matrice avec les pixels d'une autre image.
Je voudrais savoir si c'est possible dans un même programme de charger deux images et d'appliquer un traitement indépendant pour chacune d'elle. Si oui, avec quelles fonctions de C???

Merci d'avance pour l'aide.

15 réponses

BunoCS Messages postés 15479 Date d'inscription lundi 11 juillet 2005 Statut Modérateur Dernière intervention 25 juin 2024 103
14 avril 2006 à 16:01
Si tu sais ouvrir une image, tu sais en ouvrir 2, 3, ...

Buno
----------------------------------------
L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai...
Le site de mon mariage
0
SAKingdom Messages postés 3212 Date d'inscription lundi 7 novembre 2005 Statut Membre Dernière intervention 16 février 2009 15
14 avril 2006 à 16:08
C'est sûr. Ça dépend comment tu travail. Si tu travail sur des HDC et bien tu te fais autant de HDC mémoire qu'il y a d'image à analyser.

___________________________________________
Les plus grands esprits trouvent toujours une solution
0
cs_elo29 Messages postés 70 Date d'inscription mardi 7 février 2006 Statut Membre Dernière intervention 26 avril 2006
18 avril 2006 à 10:16
Merci pour les réponses!!

Voilà ce que je fais pour ouvrir une image :

FILE* fichier;
unsigned char image[3*largeurimage*hauteurimage];
unsigned char tmp[501];

fichier=fopen("test.bmp","rb");
fread(&tmp,54,1,fichier);
fread(&image,3*hauteurimage*largeurimage,1,fichier);

J'ai donc, dans le même programme, refait la même manip pour ouvrir une seconde image et il m'envoie un message d'erreur Microsoft Windows. Je crois qu'il n'aime pas le second
"unsigned char image2[3*largeurimage*hauteurimage];" ??

Pouvez-vous m'expliquer ce qui ne va pas dans mon code svp? Merci d'avance!!



fclose(fichier);
0
BunoCS Messages postés 15479 Date d'inscription lundi 11 juillet 2005 Statut Modérateur Dernière intervention 25 juin 2024 103
18 avril 2006 à 10:46
Je ne vois pas pourquoi "il n'aimerais pas"...

FILE* fichier;
unsigned char image[3*largeurimage*hauteurimage];
unsigned char image2[3*largeurimage*hauteurimage];
unsigned char tmp[501];

fichier=fopen("test.bmp","rb");
fread(&tmp,54,1,fichier);
fread(&image,3*hauteurimage*largeurimage,1,fichier);
fclose(fichier);

fichier=fopen("test2.bmp","rb");
fread(&tmp,54,1,fichier);
fread(&image2,3*hauteurimage*largeurimage,1,fichier);
fclose(fichier);

Buno
----------------------------------------
L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai...
Le site de mon mariage
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_elo29 Messages postés 70 Date d'inscription mardi 7 février 2006 Statut Membre Dernière intervention 26 avril 2006
18 avril 2006 à 10:59
OK!! Merci! En fait j'ouvrais un nouveau fichier pour ma nouvelle image alors qu'en effet il suffit juste de la déclarer!! Merci bien!
0
cs_elo29 Messages postés 70 Date d'inscription mardi 7 février 2006 Statut Membre Dernière intervention 26 avril 2006
18 avril 2006 à 11:23
En fait il plante encore!! Dès que je mets "unsigned char image2[3*largeurimage*hauteurimage];" il m'envoie un message d'erreur!!??
0
BunoCS Messages postés 15479 Date d'inscription lundi 11 juillet 2005 Statut Modérateur Dernière intervention 25 juin 2024 103
18 avril 2006 à 11:37
???
Tu dois avoir un problème dans la syntaxe... Postes voir ton morceau de code

Buno
----------------------------------------
L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai...
Le site de mon mariage
0
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
18 avril 2006 à 11:41
Voyez plutot:
http://www.cppfrance.com/infomsg/ALLOCATION-STATIQUE-OU-DYNAMIQUE-5_716940.aspx
Ce type d'allocation ne marche pas toujours
0
cs_elo29 Messages postés 70 Date d'inscription mardi 7 février 2006 Statut Membre Dernière intervention 26 avril 2006
18 avril 2006 à 14:14
Voici le début de mon code :

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

#define largeurimage 640
#define hauteurimage 480

int main ()
{


FILE * fichier;
unsigned char imageBMP[3*largeurimage*hauteurimage];
unsigned char imageBMP2[3*largeurimage*hauteurimage];
unsigned char tmp[501];

int *tempimBMP;

//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);
fclose(fichier);


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

fread (&tmp,54,1,fichier);
fread (&imageBMP2,3*hauteurimage*largeurimage,1,fichier);
fclose(fichier);
0
BunoCS Messages postés 15479 Date d'inscription lundi 11 juillet 2005 Statut Modérateur Dernière intervention 25 juin 2024 103
18 avril 2006 à 14:25
D'accord avec Vecchio. Dans le cas de "grandes" allocations, il faut privilégier les allocations dynamiques, sous peine de "stack overflow", ce qui arrive dans ce cas-là.

Donc, au lieu de faire: unsigned char imageBMP[3*largeurimage*hauteurimage];
Il vaut mieux faire, pour chaque image à manipuler:
unsigned char * imageBMP;
imageBMP = (unsigned char *)malloc(3*largeurimage*hauteurimage*sizeof(unsigned char));

Et ne pas oublier le "free(imageBMP)" quand on a fini de jouer avec l'image...
Buno
----------------------------------------
L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai...
Le site de mon mariage
0
cs_elo29 Messages postés 70 Date d'inscription mardi 7 février 2006 Statut Membre Dernière intervention 26 avril 2006
18 avril 2006 à 14:28
OK! j'essaye ça! En tout cas merci beaucoup pour l'aide!
0
cs_elo29 Messages postés 70 Date d'inscription mardi 7 février 2006 Statut Membre Dernière intervention 26 avril 2006
18 avril 2006 à 14:44
Avec cette méthode je n'ai plus de massages d'erreurs mais le résultat ne s'affiche pas. Faut-il changer quelque chose à ce niveau? :

fread (&tmp,54,1,fichier);
fread (&imageBMP,3*hauteurimage*largeurimage,1,fichier);
fclose(fichier);

Merci
0
cs_elo29 Messages postés 70 Date d'inscription mardi 7 février 2006 Statut Membre Dernière intervention 26 avril 2006
18 avril 2006 à 14:45
messages pardon!
0
BunoCS Messages postés 15479 Date d'inscription lundi 11 juillet 2005 Statut Modérateur Dernière intervention 25 juin 2024 103
18 avril 2006 à 15:15
Ah oui, pardon: remplaces "&imageBMP" par "imageBMP".

Buno
----------------------------------------
L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai...
Le site de mon mariage
0
cs_elo29 Messages postés 70 Date d'inscription mardi 7 février 2006 Statut Membre Dernière intervention 26 avril 2006
18 avril 2006 à 17:45
Ca fonctionne très bien, Merci beaucoup!
0
Rejoignez-nous