Créer un scanner de code QR à l'aide d'OpenCV en Python

Manav Narula 30 janvier 2023
  1. Utilisez la classe QRCodeDetector pour créer un scanner de code QR à l’aide d’OpenCV en Python
  2. Conclusion
Créer un scanner de code QR à l'aide d'OpenCV en Python

Nous connaissons tous les codes-barres présents dans différents produits. Basés sur le code Morse, les codes-barres stockent les informations en les représentant à l’aide de lignes et d’espaces et stockent les données horizontalement.

Ces derniers temps, les codes QR ont également gagné en popularité. Les codes QR sont stockés dans une boîte et sont représentés à l’aide d’une combinaison de carrés noirs et blancs avec quelques points.

Il est également basé sur le code Morse, il peut donc être considéré comme un type de matrice de codes à barres.

Les codes QR ont l’avantage sur les codes-barres traditionnels en termes de stockage. Il stocke les données dans deux directions ; par conséquent, il peut contenir plus d’informations que les codes-barres.

Ces informations peuvent être des URL, des contacts et d’autres informations jusqu’à quatre mille caractères. Il existe une application pour le scanner de code QR dans presque tous les téléphones de nos jours.

Ce tutoriel montrera comment créer un scanner de code QR à l’aide de la bibliothèque OpenCV en Python.

La bibliothèque OpenCV contient différentes fonctionnalités et classes qui peuvent stocker et traiter efficacement les images. Nous pouvons appliquer une large gamme de techniques prédéfinies dans nos cadres.

Utilisez la classe QRCodeDetector pour créer un scanner de code QR à l’aide d’OpenCV en Python

La version 4.0.0 de la bibliothèque OpenCV a introduit la classe QRCodeDetector. Cette classe contient des méthodes qui peuvent être utilisées pour détecter et scanner des images pour les codes QR.

Nous pouvons scanner des codes QR simples et multiples en utilisant différentes méthodes.

La méthode detect() de cette classe est utilisée pour scanner l’image à la recherche de codes QR ; il trouve la boîte qui contient le code QR. La méthode decode() décode le code QR détecté.

Pour détecter plusieurs QR codes dans une image donnée, on peut utiliser les fonctions detectMulti() et decodeMulti(). Pour détecter et décoder des codes sur une surface courbe, nous utilisons respectivement les méthodes detectCurved() et decodeCurved().

On peut utiliser la fonction detectandDecode() pour détecter et décoder simultanément les codes d’une image. Pour cette méthode, les méthodes detectandDecodeCurved() et detectandDecodeMulti() existent également.

Créons maintenant un code QR très simple à l’aide de cette classe et allons scanner le code QR dans l’image suivante :

QR Code à scanner

Voir le code ci-dessous.

import cv2

img = cv2.imread("2.jpg")
det = cv2.QRCodeDetector()
info, box_coordinates, _ = det.detectAndDecode(img)

if box_coordinates is None:
    print("No Code")
else:
    print(info)

if box_coordinates is not None:
    box_coordinates = [box_coordinates[0].astype(int)]
    n = len(box_coordinates[0])
    for i in range(n):
        cv2.line(
            img,
            tuple(box_coordinates[0][i]),
            tuple(box_coordinates[0][(i + 1) % n]),
            (0, 255, 0),
            3,
        )

cv2.imshow("Output", img)
cv2.waitKey(0)
cv2.destroyAllWindows()

Production:

http://sampleurl.com

Code QR scanné à l’aide d’OpenCV

Dans l’exemple ci-dessus, nous avons créé un objet de la classe QRCodeDetector et utilisé la fonction detectandDecode() pour scanner et décoder le code QR dans l’image donnée. Cette fonction a renvoyé les informations du code QR qui s’affiche.

Il a également renvoyé les coordonnées de la case entourant le code QR. Nous avons utilisé ces coordonnées pour tracer ses limites sur l’image à l’aide de la fonction line().

L’image finale est affichée, et nous avons utilisé les fonctions waitKey() et destroyAllWindows() pour empêcher cette fenêtre de se fermer automatiquement et attendre que l’utilisateur appuie sur une touche avant de la fermer.

Dans notre exemple, nous avons lu une image du répertoire et scanné le code QR. Nous pouvons rendre cela plus interactif en utilisant la webcam et en lisant des images à partir de là.

OpenCV fournit la classe VideoCapture pour capturer et lire les visuels de la webcam.

Conclusion

Ce didacticiel a démontré l’utilisation de la bibliothèque OpenCV de Python pour créer un simple scanner de code QR. Nous avons commencé par discuter des bases d’un code QR, de ses comparaisons avec un code-barres et des informations qu’il peut stocker.

Nous avons discuté, en bref, de la classe QRCodeDetector de la bibliothèque OpenCV, qui fournit de nombreuses méthodes pour détecter et décoder les codes QR à partir d’images. Nous avons fourni un exemple de scanner de code QR simple utilisant cette classe pour scanner et décoder le code QR d’une image donnée.

Auteur: Manav Narula
Manav Narula avatar Manav Narula avatar

Manav is a IT Professional who has a lot of experience as a core developer in many live projects. He is an avid learner who enjoys learning new things and sharing his findings whenever possible.

LinkedIn

Article connexe - Python OpenCV