Como criar e decodificar um código QR usando Python
Um código QR (código de resposta rápida) é um tipo de código de barras de matriz que armazena dados codificados. Ele foi chamado de “código de resposta rápida” por causa de sua capacidade de armazenar e acessar grandes dados em nenhum momento. Você pode encontrar esses códigos QR em todos os lugares: pôsteres, revistas, salas de cinema, sites, academias, anúncios, etc.
Usando Python, você pode gerar seu próprio código QR, personalizá-lo e decodificar informações de um código QR.
Configurar um ambiente Python
É recomendado configurar um ambiente isolado para projetos Python. Fazendo isso, você pode entender mais sobre as dependências do projeto.
Criando um Ambiente Virtual
Você pode criar um ambiente virtual em Python de várias maneiras: distribuição virtualenv, virtualenvwrapper ou Anaconda. Aqui, usaremos o virtualenv para criar um ambiente virtual.
- Crie uma pasta usando o comando mkdir [Pasta] , onde deseja criar este projeto.
- Digite cd [Pasta] no prompt de comando para mover para o novo diretório.
- Digite virtualenv [Nome do ambiente] para criar um ambiente virtual.
- Ative o ambiente virtual digitando [Nome do ambiente] Scripts activate
Instale os pacotes necessários
Instale os pacotes Python necessários usando o comando pip. Certifique-se de ter o pip instalado em seu sistema .
Execute o seguinte comando em seu prompt de comando.
pip3 install opencv-python qrcode numpy Image
Se não quiser instalar todos os pacotes de uma vez, você pode instalá-los um por um como:
pip3 install opencv-python
Isso instala o pacote opencv-python, que é usado principalmente para visão computacional, aprendizado de máquina e processamento de imagens.
pip3 install qrcode
Isso instala o pacote python qrcode que é usado para gerar e ler códigos QR.
pip3 install numpy
Isso instala o pacote Python numpy que é usado para trabalhar com matrizes.
pip3 install Image
Isso instala o pacote Image python, que fornece várias funções para carregar imagens de arquivos e criar novas imagens.
Gerar código QR
Para gerar o código, crie um novo arquivo com extensão .py que terá o código para gerar o código QR.
Cole o código a seguir em seu arquivo Python e execute o programa.
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)
Isso criará uma imagem de código QR (MUOQRCode.png) para os dados fornecidos (neste caso, www.makeuseof.com ). O código QR gerado será semelhante a este:
Gere um código QR personalizado
Você pode personalizar o código QR com os recursos incríveis da biblioteca qrcode. Você pode alterar a cor de preenchimento, cor de fundo, tamanho da imagem, tamanho da caixa e espessura da borda do código QR.
Alterando a imagem e o tamanho da caixa
Você pode alterar o tamanho da imagem do código QR usando o parâmetro de versão na classe QRCode. Ele aceita um número inteiro entre 1 e 40, onde 1 é equivalente à matriz 21×21 e 40 é equivalente à matriz 185×185. Observe que os dados não cabem no tamanho especificado, a versão aumentará automaticamente.
Da mesma forma, você pode alterar o tamanho da caixa usando o parâmetro box_size na classe QRCode. Ele especifica os pixels de cada caixa no código 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)
O seguinte arquivo de imagem de código QR será gerado:
Além disso, a seguinte saída será exibida-
Size of the QR image(Version):
(33, 33)
Observe que a versão é dimensionada automaticamente de acordo com o tamanho dos dados.
Alterando a Cor de Preenchimento
Você pode alterar a cor de preenchimento do código QR usando o parâmetro 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)
O seguinte arquivo de imagem de código QR será gerado:
Mudando a cor de fundo
Você pode alterar a cor de fundo do código QR usando o parâmetro 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)
O seguinte arquivo de imagem de código QR será gerado:
Alterando a Espessura da Borda
Você pode alterar a espessura da borda do código QR usando o parâmetro border na 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)
O seguinte arquivo de imagem de código QR será gerado:
Decodifique o código QR usando a imagem do código QR
Você pode decodificar informações da imagem do código QR usando a biblioteca OpenCV do Python. OpenCV tem um detector de código QR embutido. Usando o detector, você pode decodificar dados do código 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")
Se a imagem fornecida for um código QR válido, os dados decodificados serão exibidos. Neste caso, a seguinte saída será gerada-
QRCode data:
https://www.makeuseof.com/
Decodifique o código QR ao vivo usando uma webcam
Na maioria das vezes, as pessoas tendem a usar uma webcam para escanear códigos QR. Usando o potencial da biblioteca Python e OpenCV, você pode facilmente decodificar dados de um código 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()
Ao executar este código, sua webcam será aberta automaticamente. Basta segurar o código QR na frente da webcam e os dados serão decodificados e exibidos no prompt de comando.
Codificação e decodificação de código QR facilitada
Usando este artigo, você pode codificar, decodificar e personalizar facilmente os códigos QR conforme desejar. Você pode até criar um aplicativo gerador de scanner de código QR completo usando o código fornecido.
Existem várias maneiras criativas de usar os códigos QR . Seja criativo e use os códigos QR como quiser.