Précédent   Forum du club des développeurs et IT Pro > Environnements de développement > MATLAB > Images
Images Forum d'entraide sur le traitement d'images en MATLAB
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 30/12/2012, 22h27   #1
franck34matlab
Invité régulier
 
Homme loulou Beignet
Inscription : novembre 2012
Messages : 24
Détails du profil
Informations personnelles :
Nom : Homme loulou Beignet
Localisation : France

Informations forums :
Inscription : novembre 2012
Messages : 24
Points : 5
Points : 5
Par défaut Copie d'une ligne prédéfinie x fois dans une matrice

bonjour

un petit problème se pose et je bloque depuis de nombreuses heures :

je dois construire un fichier texte 'content.txt' qui se constitue d'une première colonne qui indique le nom des fichiers.jpg d'un répertoire donné et la suite de chiffres dans les 4 autres colonnes qui sont toujours identiques : 0 1 8 0 0

La problématique est que je ne connais pas à l'avance le nombre de fichiers présents dans le répertoire et donc je ne peux pas construire une matrice d'une taille connue en nombre de ligne à l'avance.

Il s'agit de construire dans ce fichier texte (qui pourrait être considéré comme une matrice je pense ?) pour qu'il soit comme ceci :

Admettons qu'il y a 4 fichiers (nom_fichier_n°.jpg) dans le répertoire donné, le fichier texte de sortie à construire serait :

nom_fichier_01.jpg 0 1 8 0 0
nom_fichier_02.jpg 0 1 8 0 0
nom_fichier_03.jpg 0 1 8 0 0
nom_fichier_04.jpg 0 1 8 0 0

En gros il faudrait ajouter une ligne pour chaque nom de fichier et ajouter en bout les chiffres 0 1 8 0 0

Quelqu'un a-t-il une idée ?


Voici mon code de départ pour lire les fichiers et créer une liste des fichiers .jpg dans une matrice de taille (nbr de fichier, 1 colonne), ça ressemble à un vecteur quoi.

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
A = dir('rep_images/*.jpg');

for p=1:size(A,1);
    fid=fopen(A(p).name,'r');
    fclose(fid);
end

for p=1:size(A,1)
    disp(A(p).name)
end

saizeA = size(A,1);
B=[0 1 8 0 0]
Ensuite je bloque, peut-être que la méthode n'est pas bonne du tout d'ailleurs.
franck34matlab est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/12/2012, 23h02   #2
Winjerome
Modérateur
 
Avatar de Winjerome
 
Homme Jérôme
Inscription : septembre 2009
Messages : 5 175
Détails du profil
Informations personnelles :
Nom : Homme Jérôme
Âge : 25
Localisation : France, Pyrénées Atlantiques (Aquitaine)

Informations forums :
Inscription : septembre 2009
Messages : 5 175
Points : 12 665
Points : 12 665
Bonsoir,

Quelle est l'utilité des ces lignes
Code :
1
2
3
4
for p=1:size(A,1);
    fid=fopen(A(p).name,'r');
    fclose(fid);
end
Tu ouvres en lecture tes fichiers et les refermes immédiatement...

Tu as simplement à ouvrir ton fichier texte 'content.txt' en écriture (fopen permission 'wt'), écrire les noms et valeurs avec fprintf dans un boucle, et le refermer avec fclose.
__________________
Débutant en MATLAB ? Vous voulez faire une Interface Graphique ? Les Tutoriels et la FAQ sont là pour vous aider
Une erreur ? FAQ : Messages d'erreur et avertissements
"Ça ne marche pas" n'est pas une réponse acceptable Expliquez clairement votre problème (erreurs, résultats non attendus...).
Citation:
En essayant continuellement on finit par réussir. Donc: plus ça rate, plus on a de chance que ça marche. - Jacques Rouxel
L'expérience, c'est le nom que chacun donne à ses erreurs - Oscar Wilde
Pas de question technique par MP, Merci
Winjerome est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/12/2012, 00h05   #3
franck34matlab
Invité régulier
 
Homme loulou Beignet
Inscription : novembre 2012
Messages : 24
Détails du profil
Informations personnelles :
Nom : Homme loulou Beignet
Localisation : France

Informations forums :
Inscription : novembre 2012
Messages : 24
Points : 5
Points : 5
En fait cette partie du code me permet pour moi d afficher le résultat de ce que je cherchais à faire dans une première étape : arriver à avoir la liste des fichiers contenus dans A.

Pour tes explications, étant débutant j'aurais besoin d'aide pour la constitution de fichier avec les valeurs dedans en plus.
franck34matlab est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/12/2012, 00h34   #4
Winjerome
Modérateur
 
Avatar de Winjerome
 
Homme Jérôme
Inscription : septembre 2009
Messages : 5 175
Détails du profil
Informations personnelles :
Nom : Homme Jérôme
Âge : 25
Localisation : France, Pyrénées Atlantiques (Aquitaine)

Informations forums :
Inscription : septembre 2009
Messages : 5 175
Points : 12 665
Points : 12 665
Citation:
Envoyé par franck34matlab Voir le message
En fait cette partie du code me permet pour moi d afficher le résultat de ce que je cherchais à faire dans une première étape : arriver à avoir la liste des fichiers contenus dans A.
Je parle bien de ces lignes
Code :
1
2
3
4
5
for p=1:size(A,1);
    fid=fopen(A(p).name,'r'); 
    % plutôt fullfile('rep_images', A(p).name) car dans le dossier rep_images. Voir FAQ
    fclose(fid);
end
et non de celles-ci :
Code :
1
2
3
for p=1:size(A,1)
    disp(A(p).name)
end
qui elles servent bien à afficher les noms des fichiers.

Citation:
Envoyé par franck34matlab Voir le message
Pour tes explications, étant débutant j'aurais besoin d'aide pour la constitution de fichier avec les valeurs dedans en plus.
Quelles sont les parties qui te posent problèmes ?
As-tu jeté un coup d’œil à la FAQ Quelles sont les fonctions de lecture et écriture ? ainsi que la documentation des fonctions ?
Code :
1
2
3
doc fopen
doc fprintf
doc fclose
__________________
Débutant en MATLAB ? Vous voulez faire une Interface Graphique ? Les Tutoriels et la FAQ sont là pour vous aider
Une erreur ? FAQ : Messages d'erreur et avertissements
"Ça ne marche pas" n'est pas une réponse acceptable Expliquez clairement votre problème (erreurs, résultats non attendus...).
Citation:
En essayant continuellement on finit par réussir. Donc: plus ça rate, plus on a de chance que ça marche. - Jacques Rouxel
L'expérience, c'est le nom que chacun donne à ses erreurs - Oscar Wilde
Pas de question technique par MP, Merci
Winjerome est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/12/2012, 10h19   #5
franck34matlab
Invité régulier
 
Homme loulou Beignet
Inscription : novembre 2012
Messages : 24
Détails du profil
Informations personnelles :
Nom : Homme loulou Beignet
Localisation : France

Informations forums :
Inscription : novembre 2012
Messages : 24
Points : 5
Points : 5
Disons que je n'arrive pas à automatiser l'ajout des chiffres.

En fait ce bout de code est situé dans un code beaucoup plus grand, donc je ne peux pas me permettre de mettre les chiffres à la main dans ce fichier texte.

C'est pourquoi j'ai fait ce post, et trouver une solution qui permette d'ajouter les chiffres en bout de ligne de chaque nom de fichier et ce pour chaque fichier présent dans une répertoire.

Avec la fonction fprintf, je ne sais pas si je peux ajouter les chiffres en questions.
franck34matlab est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/12/2012, 11h59   #6
Winjerome
Modérateur
 
Avatar de Winjerome
 
Homme Jérôme
Inscription : septembre 2009
Messages : 5 175
Détails du profil
Informations personnelles :
Nom : Homme Jérôme
Âge : 25
Localisation : France, Pyrénées Atlantiques (Aquitaine)

Informations forums :
Inscription : septembre 2009
Messages : 5 175
Points : 12 665
Points : 12 665
Simplement
Code :
1
2
B = [0 1 8 0 0];
fprintf(fid, '%d ', B);
Pense à exécuter les exemples de la FAQ.
__________________
Débutant en MATLAB ? Vous voulez faire une Interface Graphique ? Les Tutoriels et la FAQ sont là pour vous aider
Une erreur ? FAQ : Messages d'erreur et avertissements
"Ça ne marche pas" n'est pas une réponse acceptable Expliquez clairement votre problème (erreurs, résultats non attendus...).
Citation:
En essayant continuellement on finit par réussir. Donc: plus ça rate, plus on a de chance que ça marche. - Jacques Rouxel
L'expérience, c'est le nom que chacun donne à ses erreurs - Oscar Wilde
Pas de question technique par MP, Merci
Winjerome est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/12/2012, 12h16   #7
franck34matlab
Invité régulier
 
Homme loulou Beignet
Inscription : novembre 2012
Messages : 24
Détails du profil
Informations personnelles :
Nom : Homme loulou Beignet
Localisation : France

Informations forums :
Inscription : novembre 2012
Messages : 24
Points : 5
Points : 5
Ah merci !

Justement je ne comprenais pas les codes des FAQ.

Etant débutant j'ai quelque fois du mal à interpréter les codes et les résultats.

Je reviendrai sur ce post pour des questions supplémentaires je pense.
franck34matlab est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/01/2013, 10h22   #8
franck34matlab
Invité régulier
 
Homme loulou Beignet
Inscription : novembre 2012
Messages : 24
Détails du profil
Informations personnelles :
Nom : Homme loulou Beignet
Localisation : France

Informations forums :
Inscription : novembre 2012
Messages : 24
Points : 5
Points : 5
Un grand merci pour les réponses, j'ai pu trouver mon bonheur !

Vous m'avez été d'un grand secours et la rapidité de réponse est excellente.
franck34matlab est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Cette discussion est résolue.
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 13h30.


 
 
 
 
Partenaires

Hébergement Web