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

Python Discussion :

Caractérisation d'image sous Python


Sujet :

Python

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2018
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2018
    Messages : 7
    Points : 1
    Points
    1
    Par défaut Caractérisation d'image sous Python
    Bonjour,

    Je suis actuellement bloqué pour effectuer mon exercice dans le cadre de ma licence professionnelle en robotique.

    L'énoncé en pièce jointe et je travaille sur Repl.

    Mes fichiers sont ''ciseau", "colle" et "crayon" avec pour nom de mes images de 0 a 29 séparé en 3 (0-9,10-19 et 20-29)

    Et pour le moment j'ai cela, je me suis surement emmêlé les pinceaux ....

    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
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
     
    #Petite précision, il faut noter que les images sont stockées dans une clé usb insérée sur le Port USB Noté D:\
     
     
    #On importe les différents outils au début du programme
     
    from numpy import mean
    from numpy import std 
    from imread import imread
    from image import caracteristique
    from os import *
    import glob 
     
    #On défini les variables nécéssaires au programme
     
    path = r"D:\TPPython\Photos"
     
    exists(path)
     
    ListeImage = []
     
    print(fname)
    A = imread(fname)
    data = A 
     
    R = data[:, :, 0]
    G = data[:, :, 1]
    B = data[:, :, 2]
     
    X=[]
    Y=[]
     
    #On applique la fonction walk pour chercher les images dans les dossiers
     
    for root, dirs, files in os.walk('path','.jepg')
     
     
     
    #On effectue les calculs de moyennes (mean), d'écarts types(std)
     
    X.append(mean(R));
    X.append(std(R));
    X.append(mean(G));
    X.append(std(G));
     
    C1 = G/(R+G+B);
    C2 = B/(R+G+B);
    C3 = (R+G+B)/(3*255);
     
    X.append(mean(C3));
    X.append(std(C3));  
     
    return(X)
    Voilà si quelqu'un peut m'aider
    Images attachées Images attachées
    • Type de fichier : pdf tp2.pdf (219,4 Ko, 60 affichages)

  2. #2
    Expert éminent
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    3 824
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Lead Dev Python
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 824
    Points : 7 120
    Points
    7 120
    Par défaut
    Bonjour,

    Je ne lis pas l'énoncé, mon but ici n'est pas de faire les devoirs, mais analyser une syntaxe, voir un peu plus, mais ça en reste là.


    • La ligne 18 est inutile, tu vas avoir soit True, soit False renvoyé, à ne pas confondre avec un message d'erreur renvoyé par l'interpréteur.
    • La ligne 24 est censé faire une copie de tableau numpy, voir ICI pour savoir faire, car là tu copies une référence et donc le tableau si modifié dans data, modifiera A, même si je crois qu'ici ça ne va pas avoir d'influence pour le moment en tout cas.
    • La ligne 35, il me semble que c'est jpeg et non jepg


    Après ces modifications et avec des print, on peut voir ce qui se passe et vérifier que c'est bien ce qu'on souhaite.

    Si tu as des erreurs après ces modifications, renvoie le code modifié et les erreurs suivantes rencontrées.
    Celui qui trouve sans chercher est celui qui a longtemps cherché sans trouver.(Bachelard)
    La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information.(Einstein)

  3. #3
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2018
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2018
    Messages : 7
    Points : 1
    Points
    1
    Par défaut
    j'ai effectué des modifications et j'obtiens cela :

    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
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
     
     
    #Petite précision, il faut noter que les images sont stockées dans une clé usb insérée sur le Port USB Noté D:\
     
     
    #On importe les différents outils au début du programme
     
    from numpy import mean
    from numpy import std 
    from imread import imread
    from image import caracteristique
    from os import *
    import glob 
     
    #On défini les variables nécéssaires au programme
     
    path = r"D:\TPPython\Photos"
     
    ListeImage = []
     
    print(fname)
    A = imread(fname)
    data = A 
     
    R = data[:, :, 0]
    G = data[:, :, 1]
    B = data[:, :, 2]
     
    X=[]
    Y=[]
     
    #On applique la fonction walk pour chercher les images dans les dossiers
     
    for root, dirs, files in os.walk ('path','.jpeg')
     
     
    #On effectue les calculs de moyennes (mean), d'écarts types(std)
     
    X.append(mean(R));
    X.append(std(R));
    X.append(mean(G));
    X.append(std(G));
     
    C1 = G/(R+G+B);
    C2 = B/(R+G+B);
    C3 = (R+G+B)/(3*255);
     
    X.append(mean(C3));
    X.append(std(C3));  
     
    return(X)
    Et je ne comprend pas comment faire, car cela m'indique une erreur de syntaxe :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
     
    Python 3.6.1 (default, Dec 2015, 13:05:11)
    [GCC 4.8.2] on linux
     
      File "main.py", line 33
        for root, dirs, files in os.walk ('path','.jpeg')
                                                        ^
    SyntaxError: invalid syntax
    exited with non-zero status
    j'ai bien enlevé la partie .jpeg en rajoutant glob.glob('*.jpeg') mais rien ne fais.

  4. #4
    Expert éminent
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    3 824
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Lead Dev Python
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 824
    Points : 7 120
    Points
    7 120
    Par défaut
    Il te manque le : dans ta ligne où se trouve la boucle for.

    Ensuite selon l'indentation et le besoin lié à ton problème, quel est l'intérêt de cette boucle ? Dans ton code on ne voit pas l'utilisation des variables root, dirs et files

    Il faudra mettre des print pour vérifier ce que retourne ces variables, tu auras l'esprit plus clair !
    Celui qui trouve sans chercher est celui qui a longtemps cherché sans trouver.(Bachelard)
    La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information.(Einstein)

  5. #5
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2018
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2018
    Messages : 7
    Points : 1
    Points
    1
    Par défaut
    Merci avec les : cela fonction mieux mais il subsiste une erreur qui est :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    Python 3.6.1 (default, Dec 2015, 13:05:11)
    [GCC 4.8.2] on linux
     
      File "main.py", line 51
        return(X)
        ^
    SyntaxError: 'return' outside function
    exited with non-zero status
    Mon énoncé m'indique cela :

    Modifier votre script pour que le calcul des caractéristiques précédentes soit réalisé sur l’ensemble des
    image.
    Pour cela, utiliser la librairie os et en particulier la fonction walk
    Stocker dans les résultats dans 2 matrices X et Y .
    Chaque ligne de X contient les caractéristiques d’une image. Chaque ligne de Y contient le label d’appartenance
    d’une image.
    NB : il est crucial que les données dans X et Y respecte le même ordre
    L3
    Et je voulais d'abord vérifier que j'écrivais correctement la fonction walk car je débute.

    Le principe que je veux appliqué est le suivant :

    - générer une boucle for me permettant de détecter les jpeg qui sont trié par fichiers en 3 dossiers : ''ciseau" (0 à 9), "colle"(10 à 19) et "crayon"(20 à 29)
    - à la fin de cette boucle incrémenté de 1 l'index ou i pour passer à la suite jusqu'à la fin
    - stocker les valeurs dans deux liste X pour les résultats de C1, C2 et C3 et Y pour le chemin d'accès de l'image traitée

  6. #6
    Membre chevronné
    Homme Profil pro
    Enseignant
    Inscrit en
    Juin 2013
    Messages
    1 608
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2013
    Messages : 1 608
    Points : 2 072
    Points
    2 072
    Par défaut
    A priori, les bases sont à revoir :
    le "return" termine la fonction... qui n'est pas définie.
    Cela se fait avec :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    def ma_fonction():
       ....
    Pas d'aide par mp.

  7. #7
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2018
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2018
    Messages : 7
    Points : 1
    Points
    1
    Par défaut
    Oui merci mais même en le définissant

    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
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
     
    #Petite précision, il faut noter que les images sont stockées dans une clé usb insérée sur le Port USB Noté D:\
     
     
    #On importe les différents outils au début du programme
     
    from numpy import mean
    from numpy import std 
    from imread import imread
    from image import caracteristique
    from os import *
    import glob 
     
    #On défini les variables nécéssaires au programme
     
    def caracteristique (ListeImage):
     
    path = r"D:\TPPython\Photos"
     
    ListeImage = []
     
    print(ListeImage)
     
     
    A = imread(ListeImage)
     
    data = A 
     
    R = data[:, :, 0]
    G = data[:, :, 1]
    B = data[:, :, 2]
     
    X = []
    Y = []
     
    #On applique la fonction walk pour chercher les images dans les dossiers
     
    for root, dirs, files in os.walk ('path','.jpeg'):
      Y = os.path.join(root, name)
     
     
    #On effectue les calculs de moyennes (mean), d'écarts types(std)
     
    C1 = G/(R+G+B);
     
    C2 = B/(R+G+B);
     
    C3 = (R+G+B)/(3*255);
     
    X.append(mean(C1));
    X.append(std(C1));
     
    X.append(mean(C2));
    X.append(std(C2));
     
    X.append(mean(C3));
    X.append(std(C3));  
     
    return(X)
    J'obtiens une erreur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Python 3.6.1 (default, Dec 2015, 13:05:11)
    [GCC 4.8.2] on linux
     
      File "main.py", line 18
        path = r"D:\TPPython\Photos"
           ^
    IndentationError: expected an indented block
    exited with non-zero status
    Pourtant cela me semble bon sur cette ligne

  8. #8
    Expert éminent
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    3 824
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Lead Dev Python
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 824
    Points : 7 120
    Points
    7 120
    Par défaut
    Je pense que vous devez clairement partir de 0 et lire un tutoriel, car vous ne savez pas ce qu'est l'indentation, et c'est ce qu'on apprend comme base sur le langage.

    Une fonction se définie comme tu l'exprimes, mais tu n'as rien mis dans cette fonction... l'interpréteur attend à ce que tu y inscrives quelque chose, et tant qu'à faire, qu'elle te soit utile pour ta problématique. Alors d'autres questions entre en jeu, dont une particulière, quel intérêt de cette fonction du côté général du langage ? On pourrait en ajouter une autre, quel intérêt de cette fonction pour ton problème ?
    Celui qui trouve sans chercher est celui qui a longtemps cherché sans trouver.(Bachelard)
    La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information.(Einstein)

  9. #9
    Membre chevronné
    Homme Profil pro
    Enseignant
    Inscrit en
    Juin 2013
    Messages
    1 608
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2013
    Messages : 1 608
    Points : 2 072
    Points
    2 072
    Par défaut
    Oui, c'est bien ce que je craignais.
    Pas d'aide par mp.

  10. #10
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2018
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2018
    Messages : 7
    Points : 1
    Points
    1
    Par défaut
    Le probleme c'est que je n'ai jamais eu de cours sur cela juste 10 h de tp mais rien d'autre et on nous demande se genre de programmation, je suis donc un peu perdu.

  11. #11
    Membre chevronné
    Homme Profil pro
    Enseignant
    Inscrit en
    Juin 2013
    Messages
    1 608
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2013
    Messages : 1 608
    Points : 2 072
    Points
    2 072
    Par défaut
    Ok, mais on ne peut pas faire grand chose pour vous : il va falloir apprendre à marcher avant de faire du saut à la perche.
    Pas d'aide par mp.

Discussions similaires

  1. Analyse d'images sous python
    Par melou_science dans le forum Calcul scientifique
    Réponses: 1
    Dernier message: 19/05/2016, 18h57
  2. Mettre une Image dans un Text() sous Python 3
    Par sancho.poncho dans le forum Tkinter
    Réponses: 6
    Dernier message: 07/07/2012, 11h41
  3. python comme CGI - affichage d'images sous HTML
    Par pschmidtke dans le forum Réseau/Web
    Réponses: 7
    Dernier message: 30/07/2009, 10h49
  4. Afficher des images sous directX
    Par cyberlewis dans le forum DirectX
    Réponses: 17
    Dernier message: 12/07/2004, 12h07
  5. Affichage d'une image sous linux
    Par Braim dans le forum x86 32-bits / 64-bits
    Réponses: 5
    Dernier message: 25/03/2003, 10h41

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