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 :

Traitement d'image pour un projet d'isn de terminal S


Sujet :

Python

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2015
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2015
    Messages : 8
    Points : 1
    Points
    1
    Par défaut Traitement d'image pour un projet d'isn de terminal S
    Bonjour,

    Nous sommes actuellement en classe de terminale S et nous devons réaliser un projet en ISN pour le bac à la fin de l'année et on galère un peu.
    Le but de notre projet consiste à réaliser un programme capable de analyser et de repérer le nombre d'objet sur une image prise préalablement.
    Explication: on prend plusieurs objets de tailles différentes et de formes différentes mais de couleurs unis, on les met tous sur une table par exemple, on prend une photo et on l'a fait analyser grace à python. Nous avons déja réaliser un programme capable de créer un nombre de carré aléatoire de même couleur puis on prend une capture d'écran du canvas obtenu et le programme l'analyse pixels par pixels et fini par nous dire le nombre de carré. Nous n'arrivons pas à aller plus loin car nous n'avaons pas les connaissances pour...
    Nous avons donc besoin d'aide pour nous savoir comment faire et la manière dont nous devons nous y prendre surtout que nous avons pris énormément de retard
    Merci d'avance de votre aide au plus vite.

    NB: n'arrivant pas à afficher mon programme dans ce message je pourrais vous l'envoyer par mail si vous le souhaitez

  2. #2
    Membre régulier
    Homme Profil pro
    employé
    Inscrit en
    Mars 2015
    Messages
    75
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : employé

    Informations forums :
    Inscription : Mars 2015
    Messages : 75
    Points : 103
    Points
    103
    Par défaut
    Bonjour à vous,

    Vous avez un petit # sur la barre à droite, il permet d'entrer votre code.

    Essayez de le mettre car, c'est plus facile pour les pros de vous aider !

  3. #3
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2015
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2015
    Messages : 8
    Points : 1
    Points
    1
    Par défaut
    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
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    from tkinter import *
    import random
    from math import *
    from PIL import Image
     
    def Analyse():
        im=Image.open("Sans titre.jpg")
        nbcarré=0
        nbpixels=0
        #on recupere les dimensions de l'image et on les stocke dans un tuple nomme size
        a,b=im.size
        size=(a,b)
        print("taille de l'image")
        print(" largeur :",a)
        print(" hauteur :",b)
     
        # on calcule le nombre total de pixels -1 dans l'image
        c=a*b-1
        print(c)
        # on splitte les composantes de l'image
        r,g,b=im.split()
     
     
     
         # on cree 3 images differentes de nos composantes pour les visualiser eventuellement
        listr=list(r.getdata())
        newr=Image.new("L",size)
        newr.putdata(listr)
        newr.save("save_carréR.jpg")
        listg=list(g.getdata())
        newg=Image.new("L",size)
        newg.putdata(listg)
        newg.save("save_carréG.jpg")
        listb=list(b.getdata())
        newb=Image.new("L",size)
        newb.putdata(listb)
        newb.save("save_carréB.jpg")
     
     
     
        # on applique notre filtre reducteur a la composante R qui est chargee dans "listr"
        dedans=0
        cpt=0
        cpt1=0
        for i in range (0,c):
     
            if dedans==0 :
                cpt = 0
            else :
                cpt = cpt + 1
            if listg[i]<120:
                dedans = 1
                listg[i]=0
                nbpixels=nbpixels+1
            else :
                if dedans==1:
                    print(cpt)
                    cpt1=cpt
                dedans = 0
        nbcarré=nbpixels/(cpt1*cpt1)
        print("il y a ",int(nbcarré)," carrés.")
     
     
    def test(a,x_a,y_a,Fibo,Fibo2,r,j):
        print("coucou")
        for i in range(a):
            if (sqrt((x_a-Fibo[i])**2+(y_a-Fibo2[i])**2))>((sqrt((r**2)+(r**2)))*2):
                j=j+1
            else:
                j=j
        if j==a:
            print("bon")
            return 1
        else:
            print("pas bon")
            return 0
     
     
    def carré():
        """ Dessine un carré de centre (x,y) et de coté 2r """
        #i c'est le nombre de carré
        #a numéro du carré
        #h case du tableau correspondant au carré 
        i = random.randint(1,15)
        a = 0
        h = 0
        j=0
        while a<i :
            x_a = random.randint(30,Largeur-30)
            y_a = random.randint(30,Hauteur-30)
            r = 20
            if a==0:
                Fibo=[x_a]
                Fibo2=[y_a]
                xmin=x_a-r
                ymin=y_a-r
                xmax=x_a+r
                ymax=y_a+r
                Carre = Canevas.create_rectangle(xmin,ymin,xmax,ymax, outline='red', fill='red')
                print("coordonée sur x du carré numéro ",a+1," : ",Fibo[h])
                print("coordonée sur y du carré numéro ",a+1," : ",Fibo2[h])
                h=h+1
                a=a+1
            elif  test(a,x_a,y_a,Fibo,Fibo2,r,j):
                Fibo.append(x_a)
                Fibo2.append(y_a)
                xmin=x_a-r
                ymin=y_a-r
                xmax=x_a+r
                ymax=y_a+r
                Carre = Canevas.create_rectangle(xmin,ymin,xmax,ymax, outline='red', fill='red')
                print("coordonée sur x du carré numéro ",a+1," : ",Fibo[h])
                print("coordonée sur y du carré numéro ",a+1," : ",Fibo2[h])
                h=h+1
                a=a+1
            else:
                print("recommencer")
     
        print(Fibo)
        print(Fibo2)
        print("il y'a ",i,"carrés")
     
     
     
     
     
     
    def Effacer():
        """ Efface la zone graphique """
        Canevas.delete(ALL)
     
    # Création de la fenêtre principale (main window)
    Mafenetre = Tk()
    Mafenetre.title('Carré en folie')
     
    # Création d'un widget Canvas (zone graphique)
    Largeur = 480
    Hauteur = 320
    Canevas = Canvas(Mafenetre, width = Largeur, height =Hauteur, bg ='white')
    Canevas.pack(padx =5, pady =5)
    a=Largeur
    b=Hauteur
    print("taille de l'image")
    print(" largeur :",a)
    print(" hauteur :",b)
     
    # on calcule le nombre total de pixels -1 dans l'image
    c=a*b-1
    print("Il y'a ",c," pixels")
     
    # Création d'un widget Button (bouton Go)
    BoutonGo = Button(Mafenetre, text ='Go', command = carré)
    BoutonGo.pack(side = LEFT, padx = 10, pady = 10)
     
    # Création d'un widget Button (bouton analyse)
    BoutonAna = Button(Mafenetre, text ='Analyse', command = Analyse)
    BoutonAna.pack(side = LEFT, padx = 10, pady = 10)
     
    # Création d'un widget Button (bouton Effacer)
    BoutonEffacer = Button(Mafenetre, text ='Effacer', command = Effacer)
    BoutonEffacer.pack(side = LEFT, padx = 5, pady = 5)
     
    # Création d'un widget Button (bouton Quitter)
    BoutonQuitter = Button(Mafenetre, text ='Quitter', command = Mafenetre.destroy)
    BoutonQuitter.pack(side = LEFT, padx = 5, pady = 5)
     
    #attribue du carré
     
     
    Mafenetre.mainloop()
    Voici le programme que nous avons réalisé mais il ne sert que pour "imager" le programme final qui est je le rappel un programme capable d'analyser le nombre d'objet que contient une photo de plusieurs objets posés sur une table.

  4. #4
    Expert éminent
    Avatar de jurassic pork
    Homme Profil pro
    Bidouilleur
    Inscrit en
    Décembre 2008
    Messages
    3 954
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 3 954
    Points : 9 284
    Points
    9 284
    Par défaut
    hello,
    il y a des modules qui permettent de faire du traitement d'image ( application de filtres, détection d'objets).
    Est-ce que ce que vous cherchez à faire est par exemple ceci ? :

    Dans l'image suivante, détecter le nombre de formes rouges différentes :

    Nom : fondAvecObjets.png
Affichages : 948
Taille : 8,0 Ko

    Ami calmant, J.P
    Jurassic computer : Sinclair ZX81 - Zilog Z80A à 3,25 MHz - RAM 1 Ko - ROM 8 Ko

  5. #5
    Membre chevronné

    Profil pro
    Account Manager
    Inscrit en
    Décembre 2006
    Messages
    2 301
    Détails du profil
    Informations personnelles :
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Account Manager

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 301
    Points : 1 752
    Points
    1 752
    Par défaut
    Bonjour.

    La détection d'objet est un problème difficile. Votre enseignant aurait dû vous diriger vers un truc plus simple. Ce n'est pas sérieux de s'attaquer à cela en ISN.

    Ceci étant dit, si vos objets sont de couleurs unies, le problème sera peut-être plus simple à gérer mais du coup aussi beaucoup moins réaliste.

    Avez-vous un exemple d'image ? Quelle est aussi votre démarche ?

  6. #6
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2015
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2015
    Messages : 8
    Points : 1
    Points
    1
    Par défaut
    Citation Envoyé par jurassic pork Voir le message
    hello,
    il y a des modules qui permettent de faire du traitement d'image ( application de filtres, détection d'objets).
    Est-ce que ce que vous cherchez à faire est par exemple ceci ? :

    Dans l'image suivante, détecter le nombre de formes rouges différentes :

    Nom : fondAvecObjets.png
Affichages : 948
Taille : 8,0 Ko

    Ami calmant, J.P
    Oui c'est exactement ça que nous voulons faire sauf que dans l'intitulé du projet les objets n'étaientt pas forcement tous rouge, ils faut juste qu'ils soient d'une couleur différente de l'image de fond. Comment doit-on s'y prendre ?

  7. #7
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2015
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2015
    Messages : 8
    Points : 1
    Points
    1
    Par défaut
    Citation Envoyé par rambc Voir le message
    Bonjour.

    La détection d'objet est un problème difficile. Votre enseignant aurait dû vous diriger vers un truc plus simple. Ce n'est pas sérieux de s'attaquer à cela en ISN.

    Ceci étant dit, si vos objets sont de couleurs unies, le problème sera peut-être plus simple à gérer mais du coup aussi beaucoup moins réaliste.

    Avez-vous un exemple d'image ? Quelle est aussi votre démarche ?
    c'est justement notre professeur qui nous à conseiller de faire cela mais on peut avouer qu'il est un peut fêlé... Pour imager le projet la petite histoire c'est de sortir plusieurs petit objet qu'on a dans les poche et les poser sur une table tel que une clef, un téléphone, une bille, etc... le but du programme étant de reconnaitre tout d'abord la couleur principale ( la couleur de la table ) puis déterminer le nombre d'objets et pourquoi pas leur couleurs...

  8. #8
    Expert éminent
    Avatar de jurassic pork
    Homme Profil pro
    Bidouilleur
    Inscrit en
    Décembre 2008
    Messages
    3 954
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 3 954
    Points : 9 284
    Points
    9 284
    Par défaut
    hello,
    si l'utilisation de bibliothèque est autorisée, la bibliothèque scipy possède le paquet ndimage qui permet de faire des traitements d'images.
    Voici un exemple de ce que l'on peut faire. L'image utilisée est celle que j'ai mise dans mon message précédent :

    code qui applique un filtre à une image et qui détecte le nombre d'objets :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    from scipy import ndimage
    import pylab
     
    def MonAnalyse():
        dna = ndimage.imread('fondAvecObjets.png')   
        # smooth the image (to remove small objects); set the threshold
        dnaf = ndimage.gaussian_filter(dna, 16)
        mask = dnaf < dnaf.mean()
        # find connected components
        labeled, nr_objects = ndimage.label(mask) # `
        print ("Le nombre d'objets est :  %d " % nr_objects)
        pylab.imshow(mask)
        pylab.show()
    et voici ce que cela donne :
    Nom : maskobjets.png
Affichages : 963
Taille : 10,8 Ko

    Attention ceci n'est qu'un exemple. Cela ne fonctionnera pas dans tous les cas de figure. Cela dépend du fond, de la couleur des objets. Il faut peut-être aussi décomposer l'image suivant ses canaux de couleur, utiliser un autre filtre surtout si les objets sont de différentes couleurs ou se confondant avec le fond.

    Par exemple avec l'image suivante le code ne marche plus :

    Nom : outils.jpg
Affichages : 995
Taille : 38,0 Ko

    Il y a une bibliothèque beaucoup plus complète pour faire du traitement d'image mais elle est énorme (sous windows plus de 3Go installés) c'est opencv.

    Ami calmant, J.P
    Jurassic computer : Sinclair ZX81 - Zilog Z80A à 3,25 MHz - RAM 1 Ko - ROM 8 Ko

  9. #9
    Membre chevronné

    Profil pro
    Account Manager
    Inscrit en
    Décembre 2006
    Messages
    2 301
    Détails du profil
    Informations personnelles :
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Account Manager

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 301
    Points : 1 752
    Points
    1 752
    Par défaut
    Je ne pense pas que l'utilisation d'OpenCV ou scipy soit autorisée.

    Il y a tout de même un gros problème : "la table est de couleur unie" ne veut pas dire grand chose. Ce qui est uni pour nos yeux ne le sera pas pour un programme. Il faudrait commencer par segmenter les couleurs en un vrai noir et blanc par exemple. A vous de voir comment faire mais ce n'est pas dur.

    Une fois ceci fait, le repérage des formes ne sera pas si simple que cela à moins de préciser ce qui est attendu. Un contour des objets ? Là c'est dur. Un simple masque ? Là c'est faisable. Questions à poser à votre enseignant.

  10. #10
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2015
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2015
    Messages : 8
    Points : 1
    Points
    1
    Par défaut
    Le prof n'est pas contre l'utilisation de open cv et de scipy si j'arrive a comprend ce que je fait ^^ Or je ne parvient pas à téléchargé ni l'une ni l'autre de bibliothèques et encore moin a comprendre comment elles fonctionnent...

  11. #11
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2015
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2015
    Messages : 8
    Points : 1
    Points
    1
    Par défaut
    Citation Envoyé par jurassic pork Voir le message
    hello,
    si l'utilisation de bibliothèque est autorisée, la bibliothèque scipy possède le paquet ndimage qui permet de faire des traitements d'images.
    Voici un exemple de ce que l'on peut faire. L'image utilisée est celle que j'ai mise dans mon message précédent :

    code qui applique un filtre à une image et qui détecte le nombre d'objets :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    from scipy import ndimage
    import pylab
     
    def MonAnalyse():
        dna = ndimage.imread('fondAvecObjets.png')   
        # smooth the image (to remove small objects); set the threshold
        dnaf = ndimage.gaussian_filter(dna, 16)
        mask = dnaf < dnaf.mean()
        # find connected components
        labeled, nr_objects = ndimage.label(mask) # `
        print ("Le nombre d'objets est :  %d " % nr_objects)
        pylab.imshow(mask)
        pylab.show()
    et voici ce que cela donne :
    Nom : maskobjets.png
Affichages : 963
Taille : 10,8 Ko

    Attention ceci n'est qu'un exemple. Cela ne fonctionnera pas dans tous les cas de figure. Cela dépend du fond, de la couleur des objets. Il faut peut-être aussi décomposer l'image suivant ses canaux de couleur, utiliser un autre filtre surtout si les objets sont de différentes couleurs ou se confondant avec le fond.

    Par exemple avec l'image suivante le code ne marche plus :

    Nom : outils.jpg
Affichages : 995
Taille : 38,0 Ko

    Il y a une bibliothèque beaucoup plus complète pour faire du traitement d'image mais elle est énorme (sous windows plus de 3Go installés) c'est opencv.

    Ami calmant, J.P
    J'aurais vraiment besoin de ton aide s'il te plait J.P donc peut tu me concacré une soirée prochainement juste pour que je puisse avancé et faire quelque chose car plus le temps passe et plus je suis dans la ****... Merci à toi d'avance

  12. #12
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2015
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2015
    Messages : 8
    Points : 1
    Points
    1
    Par défaut
    S'il vous plait...

  13. #13
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2015
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2015
    Messages : 8
    Points : 1
    Points
    1
    Par défaut
    Jurassic Pork s'il te plait.....

Discussions similaires

  1. Traitement d'image pour OCR - Tesseract
    Par Clad3 dans le forum Traitement d'images
    Réponses: 3
    Dernier message: 30/08/2013, 17h17
  2. Réponses: 0
    Dernier message: 10/12/2012, 15h55
  3. Cours Traitement d'images pour débutants
    Par fraisa1985 dans le forum Traitement d'images
    Réponses: 1
    Dernier message: 22/09/2010, 10h57
  4. API et traitement d'image pour VB
    Par ben_ghost dans le forum VB 6 et antérieur
    Réponses: 0
    Dernier message: 06/11/2008, 16h25

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