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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau membre du 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
    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 éprouvé
    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
    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 membre du 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
    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 confirmé
    Avatar de jurassic pork
    Homme Profil pro
    Bidouilleur
    Inscrit en
    Décembre 2008
    Messages
    4 228
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 4 228
    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 : 1000
Taille : 8,0 Ko

    Ami calmant, J.P

  5. #5
    Membre éprouvé

    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
    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 membre du 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
    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...

  7. #7
    Nouveau membre du 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
    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 : 1000
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 ?

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