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

Calcul scientifique Python Discussion :

reconnaissance de nombre de points blancs sur une image


Sujet :

Calcul scientifique Python

  1. #1
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2017
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2017
    Messages : 5
    Points : 3
    Points
    3
    Par défaut reconnaissance de nombre de points blancs sur une image
    Bonjour

    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
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
     
    import imageio
     
    def recupererImage(path) :
        im = imageio.imread(path)
        return im
     
    def remplaceProche(x,y, image) :
        image[x,y][0] = 0
        image[x,y][1] = 0
        image[x,y][2] = 0
     
        if x-1 > 0 :
            if image[x-1,y][0] > 125 or image[x-1,y][1] > 125 or image[x-1,y][2] > 125 :
                remplaceProche(x-1,y,image)
     
        if x+1 < image.shape[0] :
            if image[x+1,y][0] > 125 or image[x+1,y][1] > 125 or image[x+1,y][2] > 125 :
                remplaceProche(x+1,y,image)
     
        if y-1 > 0 :
            if image[x,y-1][0] > 125 or image[x,y-1][1] > 125 or image[x,y-1][2] > 125 :
                remplaceProche(x,y-1,image)
     
        if y+1 < image.shape[1] :
            if image[x,y+1][0] > 125 or image[x,y+1][1] > 125 or image[x,y+1][2] > 125 :
                remplaceProche(x,y+1,image)
     
    def comptePointImg(image) :
        cpt = 0
        # Recuperation de largeur, hauteur, nb composantes
        shape = image.shape
     
        for x in range(0, shape[0]-1) :
            for y in range(0, shape[0]-1) :
                if image[x,y][0] > 125 or image[x,y][1] > 125 or image[x,y][2] > 125 :
                    cpt += 1
                    remplaceProche(x,y,image)
     
        return cpt
     
    def appliFull(path) :
        return comptePointImg(recupererImage(path))
    Mon idée étant de de considérer des pixel non blanc si l'un des composant est supérieur à 0 mais j'ai un soucis : RecursionError: maximum recursion depth exceeded while calling a Python object

    Ai-je fais une bourde dans mon code ? je débute en python..

    Pouvez vous m'indiquer les raisons pour lesquelles cela ne fonctionne pas ? est-ce que c'est simplement puisque ma recursion dure trop longtemps ?

    Merci beaucoup !

    Respectueusement,
    Coquendi

  2. #2
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 283
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 283
    Points : 36 770
    Points
    36 770
    Par défaut
    Citation Envoyé par coquendi Voir le message
    Mon idée étant de de considérer des pixel non blanc si l'un des composant est supérieur à 0 mais j'ai un soucis : RecursionError: maximum recursion depth exceeded while calling a Python object
    remplaceProche est une fonction récursive.
    Pour éviter les débordements mémoire Python limite le nombre d'appels récursifs à 1000.
    C'est vous qui avez écrit ce code, donc vous devriez savoir si çà fait du sens de repousser cette limite ou si c'est votre algo. qui est en défaut.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  3. #3
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2017
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2017
    Messages : 5
    Points : 3
    Points
    3
    Par défaut
    Bonjour,

    merci pour votre réponse.

    Si je repousse à plus de 3500 environ mon shell plante. Si je reste en dessous j'ai toujours la même erreurs. Pourtant je ne vois pas pourquoi mon algo serait faux...

  4. #4
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 283
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 283
    Points : 36 770
    Points
    36 770
    Par défaut
    Citation Envoyé par coquendi Voir le message
    Si je repousse à plus de 3500 environ mon shell plante. Si je reste en dessous j'ai toujours la même erreurs. Pourtant je ne vois pas pourquoi mon algo serait faux...
    Votre algo. est juste si vous pouvez expliquez pourquoi il doit empiler plus de 3500 appels.
    Et... si le shell plante au delà, c'est que vous ne pouvez pas faire cela en récursif.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  5. #5
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2017
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2017
    Messages : 5
    Points : 3
    Points
    3
    Par défaut
    Mais mon shell plante donc j'ai toujours pas le résultat. De plus comment savoir si je n'ai pas fait d'erreur ?

    A vrai dire, je ne comprend pas mon erreur. Pouvez vous m'aider à comprendre ce qui se passe ?

  6. #6
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 283
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 283
    Points : 36 770
    Points
    36 770
    Par défaut
    Citation Envoyé par coquendi Voir le message
    Mais mon shell plante donc j'ai toujours pas le résultat. De plus comment savoir si je n'ai pas fait d'erreur ?

    A vrai dire, je ne comprend pas mon erreur. Pouvez vous m'aider à comprendre ce qui se passe ?
    Désolé mais je ne comprends même pas l'intérêt de ce que fait votre fonction.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  7. #7
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2017
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2017
    Messages : 5
    Points : 3
    Points
    3
    Par défaut
    L'idee est de compté le nombre de point noir sur un fond blanc.

    Quand je croise un pixel noir, je considère que c'est un point et je met en blanc tout les pixels noir à toucher afin de ne pas compté plusieurs fois les points noirs.

    La fonction recursive permet de mettre en blanc les pixels noirs de proche en proche.

  8. #8
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2017
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2017
    Messages : 5
    Points : 3
    Points
    3
    Par défaut
    Après reflection, il n'est pas nécessairement de les passés en blanc. J'ai juste a checké si le pixel de gauche ou du dessus n'est pas déjà en noir

  9. #9
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 283
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 283
    Points : 36 770
    Points
    36 770
    Par défaut
    Citation Envoyé par coquendi Voir le message
    Quand je croise un pixel noir, je considère que c'est un point et je met en blanc tout les pixels noir à toucher afin de ne pas compté plusieurs fois les points noirs.
    Si vous écrivez:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
        for x in range(0, shape[0]-1) :
            for y in range(0, shape[0]-1) :
                if image[x,y][0] > 125 or image[x,y][1] > 125 or image[x,y][2] > 125 :
                    cpt += 1
    expliquez moi comment le même (x, y) = point pourrait être compté plusieurs fois?

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Débutant] détecter des points particuliers sur une image en couleur
    Par neophyte66 dans le forum Images
    Réponses: 1
    Dernier message: 04/10/2012, 15h44
  2. Elimination de points parasites sur une image
    Par kaiseresis dans le forum Images
    Réponses: 2
    Dernier message: 10/06/2008, 10h57
  3. [Nombre maximum de lignes sur une table.]
    Par tesla dans le forum Oracle
    Réponses: 4
    Dernier message: 20/02/2007, 13h40
  4. Algorithme zone de points sur une image
    Par Alain15 dans le forum 2D
    Réponses: 1
    Dernier message: 08/12/2006, 00h55
  5. Réponses: 2
    Dernier message: 28/07/2005, 03h59

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