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 :

Programme Python Lecture QR-Code (Pillow)


Sujet :

Python

  1. #1
    Candidat au Club
    Homme Profil pro
    Etudiant
    Inscrit en
    Mai 2015
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Etudiant

    Informations forums :
    Inscription : Mai 2015
    Messages : 3
    Par défaut Programme Python Lecture QR-Code (Pillow)
    Bonsoir tout le monde,

    Avant toutes choses, sachez que je suis débutant (cela se verra rapidement à travers mes "programmes"), donc soyez indulgents !
    Voilà, je suis en Terminale S, spécialité ISN et je dois, réaliser un projet sur les codes barres et les QR-Code, c'est à dire pouvoir les générer et les lire.
    Seulement voilà quelque chose ne va pas quant à mon programme pour lire un QR-Code

    Je souhaite, à travers mon programme réaliser les étapes suivantes :
    1) Repérer le cadre du QR-Code en repérant un enchaînement spécifique d'un certain nombre de pixels noirs
    2) Une fois cela fait, il me suffira de me diriger vers le début du code et de lire les données, donc ça, ça devrait aller !

    Mais, le problème est qu'un problème se pose quand j'essaie de repérer le cadre. Je m'explique, j'utilise le module pillow afin de procéder à une lecture de pixel, mais voilà lorsque j'exécute mon programme, celui ne fonctionne pas.
    Je vous avoue ne pas trop comprendre d'où vient le problème, et la situation doit être aussi floue pour vous à la lecture de ma présentation, mais je vous laisse le programme, en espérant que vous puissiez y trouvez des fautes de logiques etc afin de m'aider un peu.. N'hésitez pas à me poser des questions, je vous en serais très reconnaissant !

    QRCode Prog Test 001bis.py

    Au cas où le programme n'est pas lisible :
    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
     
    #Début du programme
    from PIL.Image import *
     
    codeQR=open("QRcodeim.jpg")  #Ouverture de mon image de code QR, téléchargez en une sur votre PC, mettez la d'en votre dossier Python, et remplacer le nom "QRcodeim" par le nom de votre image en format jpeg de préférence
    largeur,hauteur=codeQR.size
    x=0
    y=0
    a=0
    p=codeQR.getpixel((x,y))         #Méthode de lecture de pixel
     
    for y in range(hauteur):
        for x in range(largeur):
            print(x,y) 
            if p==(0,0,0):                  #Dans le cas où un pixel est noir
                a=a+1
                print(x,y,a)
                if a>=(((largeur)/21)*47):      # Nombre de pixels noirs censé se suivre afin de détecter ce que je veux
                    print("ok")
                    break
            if p==(255,255,255):        # Dans le cas où c'est blanc
                a=0
                print("bad")
            print(a)
     
    #FinDuProgramme

    Voili voilou, merci d'avance pour votre aide, en espérant que c'est pas trop bordélique !

  2. #2
    Responsable Arduino et Systèmes Embarqués


    Avatar de f-leb
    Homme Profil pro
    Enseignant
    Inscrit en
    Janvier 2009
    Messages
    13 168
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Janvier 2009
    Messages : 13 168
    Billets dans le blog
    47
    Par défaut
    Salut,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    p=codeQR.getpixel((x,y))
    Cette ligne-là serait certainement en meilleure position à l'intérieur de tes boucles for, non ?

  3. #3
    Candidat au Club
    Homme Profil pro
    Etudiant
    Inscrit en
    Mai 2015
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Etudiant

    Informations forums :
    Inscription : Mai 2015
    Messages : 3
    Par défaut
    Cela change déjà mes résultats ! Je me sens bête de voir qu'une erreur comme ça cause tout cela ! Bon, c'est déjà mieux, maintenant il faut peut-être que je configure mieux ma valeur seuil de a pour arrêter mon programme !
    Merci beaucoup de ta part !

    Voilà mon programme mis à jour

    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
     
    from PIL.Image import *
     
    codeQR=open("QRcodeim.jpg")
    largeur,hauteur=codeQR.size
    x=0
    y=0
    a=0
     
    for y in range(hauteur):
        for x in range(largeur):
            p=codeQR.getpixel((x,y))
            if p==(0,0,0):
                a=a+1
                if a>=(((largeur)//21)*7):
                    print(x,y,"ok")
                    break
            if p==(255,255,255):
                a=0

  4. #4
    Candidat au Club
    Homme Profil pro
    Etudiant
    Inscrit en
    Mai 2015
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Etudiant

    Informations forums :
    Inscription : Mai 2015
    Messages : 3
    Par défaut
    Rebonjour tout le monde, je réup mon sujet pour une nouvelle question.
    Dans mon programme (que je vais linker ci dessous) j'aimerai faire en sorte que mon programme s'arrêter quand il trouve 7 pixels modules noirs d'affilés. J'ai essayé avec break, mais cela ne marche pas, mon programme ne s'arrête pas.
    Auriez vous une idée du pourquoi du comment? Et sinon, comment pourrais-je m'y prendre?

    Merci d'avance encore une fois !

    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
     
     
     
    from PIL.Image import *
     
    codeQR=open("QRCode4.jpg")
    largeur,hauteur=codeQR.size
    a=0
    for y in range(hauteur):
        a=0
        for x in range(largeur):
            p=codeQR.getpixel((x,y))
            if p==(0,0,0) or p==(1,1,1):
                a=a+1
                if a>=(((largeur)/33)*7):
                    print(x,y,a,p)
                    break
            if p==(255,255,255) or p==(254,254,254):
                a=0

Discussions similaires

  1. Réponses: 145
    Dernier message: 15/02/2009, 11h51
  2. Lecture de code barre
    Par Yanmeunier dans le forum C
    Réponses: 7
    Dernier message: 22/09/2005, 15h05
  3. Programmer un lecteur de code à barre
    Par tleboukaka dans le forum Bases de données
    Réponses: 3
    Dernier message: 12/09/2005, 17h37
  4. Execution programme et récupération du code retour
    Par Dr_GonZO dans le forum Langage
    Réponses: 5
    Dernier message: 12/07/2005, 15h20
  5. [Lien]erreur dans mon programme python
    Par durnambule dans le forum Général Python
    Réponses: 11
    Dernier message: 29/01/2004, 14h59

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