- Exigences
- Installer OpenCV dans Raspberry Pi
- Installation d'autres packages requis
- Configuration matérielle du lecteur de code QR Raspberry pi
- Code Python pour lecteur de code QR Raspberry Pi
- Test du scanner de code QR Raspberry Pi
Le code QR (code de réponse rapide) est un type de code-barres matriciel qui contient des informations sur l'élément auquel il est attaché, comme des données de localisation, un identifiant ou un tracker qui identifie un site Web ou une application, etc. Il s'agit d'un élément optique lisible par machine étiquette qui se présente sous la forme d'une image 2D et a un motif différent. Pour en savoir plus sur les codes QR et comment générer un code QR, suivez notre tutoriel précédent.
Dans ce tutoriel, nous allons créer un scanner de code QR basé sur Raspberry Pi à l' aide de la bibliothèque OpenCV et ZBar. ZBar est la meilleure bibliothèque pour détecter et décoder les différents types de codes barres et codes QR. OpenCV est utilisé pour saisir une nouvelle image à partir d'un flux vidéo et la traiter. Une fois qu'OpenCV capture une image, nous pouvons la transmettre à une bibliothèque de décodage de codes à barres Python dédiée telle qu'une ZBar qui décode le code à barres et le convertit en informations respectives.
Exigences
- Raspberry Pi 3 (toute version)
- Module de caméra Pi
Avant de procéder à ce scanner de code QR Raspberry Pi 3, nous devons d'abord installer OpenCV, la bibliothèque de décodage de codes à barres ZBar, imutils et d'autres dépendances dans ce projet. OpenCV est utilisé ici pour le traitement d'images numériques. Les applications les plus courantes du traitement numérique des images sont la détection d'objets, la reconnaissance faciale et le compteur de personnes.
Installer OpenCV dans Raspberry Pi
Ici, la bibliothèque OpenCV sera utilisée pour le scanner QR Raspberry Pi. Pour installer OpenCV, mettez d'abord à jour le Raspberry Pi.
sudo apt-get mise à jour
Ensuite, installez les dépendances requises pour installer OpenCV sur votre Raspberry Pi.
sudo apt-get install libhdf5-dev -y sudo apt-get install libhdf5-serial-dev –y sudo apt-get install libatlas-base-dev –y sudo apt-get install libjasper-dev -y sudo apt-get install libqtgui4 –Y sudo apt-get install libqt4-test –y
Après cela, installez OpenCV dans Raspberry Pi à l'aide de la commande ci-dessous.
pip3 installer opencv-contrib-python == 4.1.0.25
Nous avons précédemment utilisé OpenCV avec Raspberry pi et créé de nombreux tutoriels dessus.
- Installer OpenCV sur Raspberry Pi à l'aide de CMake
- Reconnaissance faciale en temps réel avec Raspberry Pi et OpenCV
- Reconnaissance de plaque d'immatriculation à l'aide de Raspberry Pi et OpenCV
- Estimation de la taille de la foule avec OpenCV et Raspberry Pi
Nous avons également créé une série de tutoriels OpenCV à partir du niveau débutant.
Installation d'autres packages requis
Installation de ZBar
Zbar est la meilleure bibliothèque pour détecter et décoder les différents types de codes barres et codes QR. Utilisez la commande ci-dessous pour installer la bibliothèque:
pip3 installer pyzbar
Installer imutils
imutils est utilisé pour faciliter les fonctions de traitement d'image essentielles telles que la traduction, la rotation, le redimensionnement, le squelette et l'affichage des images Matplotlib avec OpenCV. Utilisez la commande ci-dessous pour installer les imutils:
pip3 installer imutils
Installer argparse
Utilisez la commande ci-dessous pour installer la bibliothèque argparse. argparse est responsable de l'analyse des arguments de ligne de commande.
pip3 installer argparse
Configuration matérielle du lecteur de code QR Raspberry pi
Ici, nous n'avons besoin que de la caméra Raspberry Pi et Pi pour ce scanner de code QR utilisant la caméra Raspberry Pi et il vous suffit de connecter le connecteur du ruban de la caméra dans la fente de la caméra donnée dans le Raspberry pi
La caméra Pi peut être utilisée pour construire divers projets intéressants tels que la caméra de surveillance Raspberry Pi, le système de surveillance des visiteurs, le système de sécurité domestique, etc.
Code Python pour lecteur de code QR Raspberry Pi
Le code complet du lecteur QR Raspberry Pi est donné en fin de page. Avant de programmer le Raspberry Pi, comprenons le code.
Donc, comme d'habitude, démarrez le code en important tous les packages requis.
depuis imutils.video importer VideoStream depuis pyzbar importer pyzbar importer argparse importer datetime import imutils import time importer cv2
Construisez ensuite l'analyseur d'arguments et analysez les arguments. L'argument de ligne de commande contient des informations sur le chemin du fichier CSV. Le fichier CSV (Comma Separated Values) contient l'horodatage et la charge utile de chaque code-barres de notre flux vidéo.
ap = argparse.ArgumentParser () ap.add_argument ("- o", "--output", type = str, default = "barcodes.csv", help = "chemin d'accès au fichier CSV de sortie contenant les codes-barres") args = vars (ap.parse_args ())
Après cela, initialisez le flux vidéo et décommentez la ligne commentée si vous utilisez une webcam USB.
#vs = VideoStream (src = 0).start () vs = VideoStream (usePiCamera = True).start () time.sleep (2.0)
Maintenant, dans la boucle, saisissez une image du flux vidéo et redimensionnez-la à 400 pixels. Une fois qu'il saisit le cadre, appelez la fonction pyzbar.decode pour détecter et décoder le code QR.
frame = vs.read () frame = imutils.resize (frame, width = 400) barcodes = pyzbar.decode (frame)
Maintenant, parcourez les codes-barres détectés pour extraire l'emplacement du code-barres et dessinez le cadre de délimitation autour du code-barres sur l'image.
pour les codes-barres en codes-barres: (x, y, w, h) = barcode.rect cv2.rectangle (frame, (x, y), (x + w, y + h), (0, 0, 255), 2)
Décodez ensuite le code-barres détecté en une chaîne "utf-8" à l'aide de la fonction decode ("utf-8") , puis extrayez le type de code-barres à l'aide de la fonction barcode.type.
barcodeData = barcode.data.decode ("utf-8") barcodeType = barcode.type
Après cela, enregistrez les données de code-barres et le type de code-barres extraits dans une variable nommée texte, puis dessinez les données et le type de code-barres sur l'image.
text = "{} ({})". format (barcodeData, barcodeType) cv2.putText (frame, text, (x, y - 10), cv2.FONT_HERSHEY_SIMPLEX, 0.5, (0, 0, 255), 2)
Affichez maintenant la sortie avec les données du code-barres et le type de code-barres.
cv2.imshow ("Lecteur de codes-barres", cadre)
Maintenant, dans la dernière étape, vérifiez si la touche «s» est enfoncée, puis sortez la boucle principale et démarrez le processus de nettoyage.
key = cv2.waitKey (1) & 0xFF # si la touche `s` est enfoncée, sortir de la boucle si key == ord (" s "): break print (" cleaning up… ") csv.close () cv2.destroyAllWindows () contre stop ()
Test du scanner de code QR Raspberry Pi
Une fois votre configuration prête, lancez le programme de lecture de code QR. Vous verrez une fenêtre montrant une vue en direct de votre caméra, maintenant vous pouvez présenter des codes-barres devant la caméra PI. Lorsque pi décode un code-barres, il dessine une boîte rouge autour de celui-ci avec les données du code-barres et le type de code-barres comme indiqué dans l'image ci-dessous:
C'est ainsi que vous pouvez facilement créer un lecteur de code QR de caméra Raspberry Pi en utilisant simplement la carte Raspberry Pi et la caméra Pi ou la caméra USB.
Une vidéo de travail et le code complet de ce projet sont donnés ci-dessous.