Como Gerar e Ler QRCodes em Python com Poucas Linhas de Código
Como Gerar e Ler QRCodes em Python com Poucas Linhas de Código
A geração e leitura automatizada de QRCodes facilita a integração de sistemas com pagamentos, autenticação e compartilhamento de links. Utilizando a biblioteca
qrcode para criação e o opencv-python (cv2) para decodificação, é possível manipular dados visuais de forma rápida sem complexidade matemática.Python
import cv2
import qrcode
# 1. GERAR QRCODE
def gerar_qrcode(conteudo: str, arquivo_saida: str = "qrcode.png"):
# Cria o objeto QRCode e insere os dados
img = qrcode.make(conteudo)
img.save(arquivo_saida)
print(f"QRCode gerado com sucesso: {arquivo_saida}")
# 2. LER QRCODE
def ler_qrcode(caminho_imagem: str) -> str:
# Carrega a imagem do arquivo
imagem = cv2.imread(caminho_imagem)
# Inicializa o detector de QRCode do OpenCV
detector = cv2.QRCodeDetector()
# Decodifica e retorna o texto contido no QRCode
conteudo, _, _ = detector.detectAndDecode(imagem)
return conteudo
# Exemplo prático de uso
if __name__ == "__main__":
link = "https://github.com"
# Gera a imagem
gerar_qrcode(link, "github_qr.png")
# Lê a imagem gerada
resultado = ler_qrcode("github_qr.png")
print(f"Conteúdo lido do QRCode: {resultado}")
Pontos-chave
qrcode.make(): Método simplificado da bibliotecaqrcodeque gera automaticamente uma matriz com nível padrão de correção de erros e salva nos formatos tradicionais de imagem (.png,.jpg).- Detector Nativo do OpenCV: A classe
cv2.QRCodeDetector()elimina a necessidade de dependências pesadas de processamento de imagem para ler arquivos locais ou frames de vídeo. - Retorno Triplo do
detectAndDecode: O método do OpenCV retorna três valores: o texto decodificado, os pontos de contorno do polígono (points) e a matriz binarizada (straight_qrcode). O caractere_ignora os dados geométricos não utilizados. - Tratamento para Imagens Sem QR: Se a imagem não contiver um QRCode válido,
detectAndDecoderetornará uma string vazia"", sendo recomendado validar a saída antes de executar operações condicionais.

Comentários
Postar um comentário