[C] numérotation d'images

numérotation d'images [C] - C - Programmation

Marsh Posté le 30-05-2006 à 16:29:29    

Bonjour,
 
Pour mon projet , j'extrais directement les images d'une caméra et je les enregistre dans un dossier en .bmp. Mon problème est qu'elles ne s'enregistrent pas dans l'ordre numérique normal mais dans un ordre alphabétique comme ceci : 0-1-10-11-...-19-2-20-21-...-29-3-30-...
Donc, ça fausse l'ordre des résultats que j'obtiens par la suite lorsque  j'ouvre les images les unes après les autres dans cet ordre là. J'aimerais donc, si c'est une bonne solution, créer une boucle en incrémentant i de 0 à n, n étant ma dernière image , pour ouvrir les images dans l'ordre normal.
 
Mais je ne sais pas comment faire pour mettre dans mon fopen le nom de l'image avec l'indice i qui s'incrémente.  
 
Pouvez-vous m'aider svp?
 
Merci d'avance.

Reply

Marsh Posté le 30-05-2006 à 16:29:29   

Reply

Marsh Posté le 30-05-2006 à 16:48:30    

utilise sprintf ou snprintf


---------------
TriScale innov
Reply

Marsh Posté le 30-05-2006 à 16:49:26    

Salut,
inspire toi de ca:

Code :
  1. char msg[50];
  2. for (int i = 0; i < 15; i++)
  3. {
  4.      sprintf(msg, "%02d-fichier.bmp\n", i); //inclus dans stdio.h
  5.      printf("%s", msg);
  6. }


EDIT: :hot:


Message édité par breizhbugs le 30-05-2006 à 16:50:30
Reply

Marsh Posté le 30-05-2006 à 17:05:59    

Salut!!
 
Merci pour les réponse, ça fonctionne pour l'incrémentation mes je ne sais pas que mettre dens le fopne.  
 
En fait, dans la première partie de mon code, j'ai ceci :
 
sprintf(filename,"./images/Frame%d.bmp",k);
cvSaveImage(filename,(const CvArr*)frame);
k++
 
Cela permet d'enregistrer dans mon dossier images, les images récupérées de la caméra avec les noms:
Frame0
Frame1
Frame10...
 
Donc là, il faut que je lui dise, va ouvrir Frame0 puis Frame1 puis Frame2 dans le dossier en question .

Reply

Marsh Posté le 30-05-2006 à 17:08:35    

j'ai donc mis  
 
SetCurrentDirectory("...\\images" );
for(i=0;i=MAXimage;i++)
{
sprintf(Frame,"Frame%d.bmp\n",i);
printf("%s",Frame);
 
fichier=fopen(Frame,"rb" );

Reply

Marsh Posté le 30-05-2006 à 17:09:05    

i<MAXimage pardon!

Reply

Marsh Posté le 30-05-2006 à 17:16:33    

et ça ne marche pas!!

Reply

Marsh Posté le 30-05-2006 à 17:31:59    

tu ne devrais pas mettre le "\n" dans le nom de ton fichier. Mets le dans le printf("%s\n",Frame) à la place.
 
PS : si c'est toi qui enregistres les images depuis le début, tu devrais peut-être formater tes nombres pour avoir directement tes fichiers dans l'ordre alphabétique. pour cela, utilise des "%03d" à la place de "%d" dans les printf/sprintf.    man 3 printf pour plus de détails


Message édité par franceso le 30-05-2006 à 17:34:15

---------------
TriScale innov
Reply

Marsh Posté le 30-05-2006 à 17:35:20    

ah oui!! en effet, c'est ce qui bloquait l'ouverture de mon image!! merci bien en tout cas!!

Reply

Marsh Posté le 30-05-2006 à 17:45:00    

Ca marche pour la première image mais bizarrement ça ne boucle pas   ???

Reply

Marsh Posté le 30-05-2006 à 17:45:00   

Reply

Marsh Posté le 30-05-2006 à 17:52:25    

C'est bon ça marche, j'avais mis deux fois la même variable et ça plantait!!
 
Merci encore pour les réponses, ciao!!

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed