IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

MATLAB Discussion :

ouvrir successivement de nouveaux dossiers


Sujet :

MATLAB

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Août 2011
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Août 2011
    Messages : 6
    Points : 6
    Points
    6
    Par défaut ouvrir successivement de nouveaux dossiers
    Bonjour,

    Je souhaite traiter une grande quantité d'images se trouvant dans différents dossiers. Pour l'instant mon programme me permet de traiter toutes les images se trouvant dans un seul fichier. Est-il possible de demander à Matlab d'ouvrir successivement (et automatiquement) tous les dossiers d'images se trouvant dans mon gros dossier "Photos" ?

    En bref, je veux que matlab ouvre dans "Photos" le dossier n, traite toutes les photos de ce dossier, puis ouvre le dossier n+1, etc...
    Par ailleurs, les dossiers contenus dans "Photos" ont des noms très différents. Enfin, j'aimerai que le nombre n doit être trouvé automatiquement par Matlab.

    Je vous remercie par avance de votre aide.

    Grichka

  2. #2
    Modérateur

    Homme Profil pro
    Ingénieur en calculs scientifiques
    Inscrit en
    Août 2007
    Messages
    4 639
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Ingénieur en calculs scientifiques

    Informations forums :
    Inscription : Août 2007
    Messages : 4 639
    Points : 7 614
    Points
    7 614
    Par défaut
    Bonjour,

    tu peux t'inspirer de cette exemple de la :
    Comment lister les fichiers d'une certaine extension dans un répertoire ?
    Pour une bonne utilisation des balises code c'est ici!
    Petit guide du voyageur MATLABien : Le forum La faq Les tutoriels Les sources


    La nature est un livre écrit en langage mathématique. Galilée.

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Août 2011
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Août 2011
    Messages : 6
    Points : 6
    Points
    6
    Par défaut
    J'avais bien lu ceci, mais je veux lister des dossiers (tous contenus dans un gros dossier) et non des fichiers.
    Peut-on procéder de la même manière ?

    L'exemple de la FAQ est :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    rep = 'C:\monRep';
    ext = '*.jpg';
    chemin = fullfile(rep,ext);
    list = dir(chemin);
    Dans mon cas, que dois-je choisir pour "ext" ?

  4. #4
    Modérateur

    Homme Profil pro
    Ingénieur en calculs scientifiques
    Inscrit en
    Août 2007
    Messages
    4 639
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Ingénieur en calculs scientifiques

    Informations forums :
    Inscription : Août 2007
    Messages : 4 639
    Points : 7 614
    Points
    7 614
    Par défaut
    dir permet de lister des répertoires ou des fichiers, et tu n'est pas obligé de lui indiquer une extension, par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    rep = 'C:\monRep';
    list = dir(rep);
    et si un répertoire contient à la fois des fichiers et d'autres répertoires, tu peux utiliser la fonction isdir pour les différencier.
    Pour une bonne utilisation des balises code c'est ici!
    Petit guide du voyageur MATLABien : Le forum La faq Les tutoriels Les sources


    La nature est un livre écrit en langage mathématique. Galilée.

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Août 2011
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Août 2011
    Messages : 6
    Points : 6
    Points
    6
    Par défaut
    Re-bonjour,
    Tout d'abord merci pour ces explications. Toutefois je crois que mes toutes petites connaissances en Matlab ne m'ont pas permis pas de résoudre pleinement mon problème. Je ne sais pas comment dire à Matlab que s'il trouve un répertoire d'image, il faut "l'ouvrir" et corriger toutes les images qui s'y trouvent puis passer au répertoire suivant.
    Matlab signale des erreurs aux lignes 6 et 7.
    Voici mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
     
    rep = 'F:\Photos\... ;
    list = dir(rep);
     
    for i=1:nummel(list)
    tf=isdir(nummel(i));
            if tf=1
            pathname = fullfile(rep, nummel(i));
     
    % à partir d'ici commence le programme de correction d'image
     
            Backgd1=imread('pic_alt_0001','tif');
            Backgd2=imread('pic_alt_0002','tif');
            Backgd3=imread('pic_alt_0003','tif');
            Backgd4=imread('pic_alt_0004','tif');
            Backgd5=imread('pic_alt_0005','tif');
     
            Background=(Backgd1/5+Backgd2/5+Backgd3/5+Backgd4/5+Backgd5/5);
     
            pathname = 'photos corrigées';    
            mkdir('photos corrigées')    %création d'un sous-répertoire pour stocker les images corrigées
     
                for n = drange(6:70) 
                    filename = sprintf('pic_alt_%04d.tif',n);
                    img = imread(filename,'tif');
                    img_neu = 255-(Background-img); 
                    filename = sprintf('pic_new_%04d.tif',n);
                    imwrite(img_neu, fullfile('.',pathname,filename), 'tif'); 
                end
            end
    end
    Si vous pouviez me donner encore un petit coup de main, ça serait super. Merci beaucoup !

  6. #6
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 302
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Freelance mécatronique - Conseil, conception et formation

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 302
    Points : 53 163
    Points
    53 163
    Par défaut
    Quelques remarques :
    1. il n'y a qu'un seul M dans NUMEL
    2. l'opérateur de test d'égalité de la condition IF-END est "==" et non pas "=" (qui est l'opérateur d'affectation)
    3. la variable list est une structure.
    4. numel(i) ne signifie strictement rien. Ni avec ISDIR, ni avec FULLFILE
    5. évite les noms de dossier avec des caractères spéciaux (accents) et/ou des espaces
    6. il faut donner le chemin complet à IMREAD : imread(fullfile(pathname,'pic_alt_0001'),'tif');
    Ingénieur indépendant en mécatronique - Conseil, conception et formation
    • Conception mécanique (Autodesk Fusion 360)
    • Impression 3D (Ultimaker)
    • Développement informatique (Python, MATLAB, C)
    • Programmation de microcontrôleur (Microchip PIC, ESP32, Raspberry Pi, Arduino…)

    « J'étais le meilleur ami que le vieux Jim avait au monde. Il fallait choisir. J'ai réfléchi un moment, puis je me suis dit : "Tant pis ! J'irai en enfer" » (Saint Huck)

Discussions similaires

  1. Réponses: 2
    Dernier message: 05/03/2014, 10h03
  2. Créer de nouveaux dossiers?
    Par Simonake dans le forum Langage
    Réponses: 2
    Dernier message: 08/11/2009, 19h08
  3. [Batch] Ouvrir successivement 2 urls dans le même IE
    Par lutecefalco dans le forum Scripts/Batch
    Réponses: 2
    Dernier message: 14/09/2009, 15h21
  4. Ouvrir, faire apparaître un dossier
    Par rambc dans le forum Général Python
    Réponses: 2
    Dernier message: 24/02/2009, 17h46

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo