Comment créer et décoder un code QR à l’aide de Python

Un code QR (code de réponse rapide) est un type de code-barres matriciel qui stocke des données codées. Il a été nommé «code de réponse rapide» en raison de sa capacité à stocker et à accéder à de grandes données en un rien de temps. Vous pouvez trouver ces codes QR partout: affiches, magazines, salles de cinéma, sites Web, salles de sport, publicités, etc.

En utilisant Python, vous pouvez générer votre propre code QR, le personnaliser et décoder des informations à partir d'un code QR.

Configurer un environnement Python

Il est recommandé de configurer un environnement isolé pour les projets Python. En faisant cela, vous pouvez en savoir plus sur les dépendances du projet.

Créer un environnement virtuel

Vous pouvez créer un environnement virtuel en Python de plusieurs manières: virtualenv, virtualenvwrapper ou distribution Anaconda. Ici, nous utiliserons virtualenv pour créer un environnement virtuel.

  1. Créez un dossier à l'aide de la commande mkdir [Dossier] , dans lequel vous souhaitez créer ce projet.
  2. Tapez cd [Dossier] dans l'invite de commande pour vous déplacer dans le nouveau répertoire.
  3. Tapez virtualenv [Nom de l'environnement] pour créer un environnement virtuel.
  4. Activez l'environnement virtuel en tapant [Nom de l'environnement] Scripts activate

Installer les packages requis

Installez les packages Python requis à l'aide de la commande pip. Assurez-vous que pip est installé sur votre système .

Exécutez la commande suivante dans votre invite de commande.

 pip3 install opencv-python qrcode numpy Image

Si vous ne souhaitez pas installer tous les packages en une seule fois, vous pouvez les installer un par un comme:

 pip3 install opencv-python

Cela installe le package opencv-python qui est principalement utilisé pour la vision par ordinateur, l'apprentissage automatique et le traitement d'image.

 pip3 install qrcode

Cela installe le package python qrcode qui est utilisé pour générer et lire les codes QR.

 pip3 install numpy

Cela installe le package numpy python qui est utilisé pour travailler avec des tableaux.

 pip3 install Image

Cela installe le package Image python qui fournit un certain nombre de fonctions pour charger des images à partir de fichiers et pour créer de nouvelles images.

Générer un code QR

Pour générer le code, créez un nouveau fichier avec une extension .py qui aura le code pour générer le code QR.

Collez le code suivant dans votre fichier Python et exécutez le programme.

 import qrcode
# Data for which you want to make QR code
# Here we are using the URL of the MakeUseOf website
data = "https://www.makeuseof.com/"
# File name of the QR code Image
# Change it with your desired file name
QRCodefile = "MUOQRCode.png"
# Generating the QR code
QRimage = qrcode.make(data)
# Saving image into a file
QRimage.save(QRCodefile)

Cela créera une image de code QR (MUOQRCode.png) pour les données données (dans ce cas, www.makeuseof.com ). Le code QR généré ressemblera à ceci:

Générer un code QR personnalisé

Vous pouvez personnaliser le code QR avec les fonctionnalités étonnantes de la bibliothèque qrcode. Vous pouvez modifier la couleur de remplissage, la couleur d'arrière-plan, la taille de l'image, la taille de la boîte et l'épaisseur de la bordure du code QR.

Modification de la taille de l'image et de la boîte

Vous pouvez modifier la taille de l'image du code QR à l'aide du paramètre de version dans la classe QRCode. Il accepte un entier compris entre 1 et 40 où 1 équivaut à une matrice 21×21 et 40 équivaut à une matrice 185×185. Notez que les données ne correspondent pas à la taille spécifiée, la version augmentera automatiquement.

De même, vous pouvez modifier la taille de la boîte à l'aide du paramètre box_size dans la classe QRCode. Il spécifie les pixels de chaque case dans le code QR.

 # Importing libraries
import qrcode
import numpy as np
# Data which for you want to make QR code
# Here we are using URL of MakeUseOf website
data = "https://www.makeuseof.com/"
# Name of the QR code Image file
QRCodefile = "CustomisedImgBoxQRCode.png"
# instantiate QRCode object
qrObject = qrcode.QRCode(version=1, box_size=12)
# add data to the QR code
qrObject.add_data(data)
# compile the data into a QR code array
qrObject.make()
image = qrObject.make_image()
image.save(QRCodefile)
# print the image size (version)
print("Size of the QR image(Version):")
print(np.array(qrObject.get_matrix()).shape)

Le fichier image de code QR suivant sera généré:

De plus, la sortie suivante sera affichée –

 Size of the QR image(Version):
(33, 33)

Notez que la version est automatiquement mise à l'échelle en fonction de la taille des données.

Changer la couleur de remplissage

Vous pouvez modifier la couleur de remplissage du code QR à l'aide du paramètre fill_color .

 # Importing library
import qrcode
# Data for which you want to make QR Code
# Here we are using URL of MakeUseOf website
data = "https://www.makeuseof.com/"
# Name of the QR Code Image file
QRCodefile = "CustomisedFillColorQRCode.png"
# instantiate QRCode object
qrObject = qrcode.QRCode()
# add data to the QR code
qrObject.add_data(data)
# compile the data into a QR code array
qrObject.make()
image = qrObject.make_image(fill_color="red")
# Saving image into a file
image.save(QRCodefile)

Le fichier image de code QR suivant sera généré:

Changer la couleur d'arrière-plan

Vous pouvez modifier la couleur d'arrière-plan du code QR à l'aide du paramètre back_color .

 # Importing library
import qrcode
# Data for which you want to make QR Code
# Here we are using URL of MakeUseOf website
data = "https://www.makeuseof.com/"
# Name of the QR Code Image file
QRCodefile = "CustomisedBGColorQRCode.png"
# instantiate QRCode object
qrObject = qrcode.QRCode()
# add data to the QR code
qrObject.add_data(data)
# compile the data into a QR code array
qrObject.make()
image = qrObject.make_image(back_color="blue")
# Saving image into a file
image.save(QRCodefile)

Le fichier image de code QR suivant sera généré:

Modification de l'épaisseur de la bordure

Vous pouvez modifier l'épaisseur de la bordure du code QR en utilisant le paramètre border dans la classe QRCode.

 # Importing libraries
import qrcode
# Data for which you want to make QR Code
# Here we are using URL of MakeUseOf website
data = "https://www.makeuseof.com/"
# Name of the QR Code Image file
QRCodefile = "CustomisedBorderQRCode.png"
# instantiate QRCode object
qrObject = qrcode.QRCode(border=10)
# add data to the QR code
qrObject.add_data(data)
# compile the data into a QR code array
qrObject.make()
image = qrObject.make_image()
image.save(QRCodefile)

Le fichier image de code QR suivant sera généré:

Décoder le code QR à l'aide de l'image du code QR

Vous pouvez décoder les informations de l'image du code QR à l'aide de la bibliothèque OpenCV de Python. OpenCV dispose d'un détecteur de code QR intégré. En utilisant le détecteur, vous pouvez décoder les données à partir du code QR.

 # Import Library
import cv2
# Name of the QR Code Image file
filename = "MUOQRCode.png"
# read the QRCODE image
image = cv2.imread(filename)
# initialize the cv2 QRCode detector
detector = cv2.QRCodeDetector()
# detect and decode
data, vertices_array, binary_qrcode = detector.detectAndDecode(image)
# if there is a QR code
# print the data
if vertices_array is not None:
print("QRCode data:")
print(data)
else:
print("There was some error")

Si l'image fournie est un code QR valide, les données décodées seront affichées. Dans ce cas, la sortie suivante sera générée:

 QRCode data:
https://www.makeuseof.com/

Décoder le QR Code en direct à l'aide d'une webcam

La plupart du temps, les gens ont tendance à utiliser une webcam pour scanner les codes QR. En utilisant le potentiel de la bibliothèque Python et OpenCV, vous pouvez facilement décoder des données à partir d'un code QR.

 import cv2
# initalize the camera
cap = cv2.VideoCapture(0)
# initialize the OpenCV QRCode detector
detector = cv2.QRCodeDetector()
while True:
_, img = cap.read()
# detect and decode
data, vertices_array, _ = detector.detectAndDecode(img)
# check if there is a QRCode in the image
if vertices_array is not None:
if data:
print("QR Code detected, data:", data)
# display the result
cv2.imshow("img", img)
# Enter q to Quit
if cv2.waitKey(1) == ord("q"):
break
cap.release()
cv2.destroyAllWindows()

Lorsque vous exécutez ce code, votre webcam s'ouvrira automatiquement. Maintenez simplement le code QR devant la webcam et les données seront décodées et affichées dans l'invite de commande.

Encodage et décodage du code QR en toute simplicité

En utilisant cet article, vous pouvez facilement encoder, décoder et personnaliser les codes QR comme vous le souhaitez. Vous pouvez même créer une application complète de scanner-générateur de code QR à l'aide du code fourni.

Il existe plusieurs façons créatives d'utiliser les codes QR . Soyez créatif et utilisez les codes QR comme vous le souhaitez.