- Requisitos
- Instalando OpenCV no Raspberry Pi
- Instalando outros pacotes necessários
- Configuração do hardware do leitor de código QR Raspberry pi
- Código Python para leitor de código QR Raspberry Pi
- Testando o scanner de código QR Raspberry Pi
O código QR (código de resposta rápida) é um tipo de código de barras de matriz que contém informações sobre o item ao qual está anexado, como dados de localização, identificador ou um rastreador que identifica um site ou aplicativo, etc. É uma óptica legível por máquina etiqueta que está na forma de uma imagem 2D e tem um padrão diferente. Para saber mais sobre os códigos QR e como gerar um código QR, siga nosso tutorial anterior.
Neste tutorial, vamos construir um scanner de código QR baseado em Raspberry Pi usando a biblioteca OpenCV e ZBar. ZBar é a melhor biblioteca para detectar e decodificar os diferentes tipos de códigos de barras e códigos QR. O OpenCV é usado para capturar um novo quadro de um fluxo de vídeo e processá-lo. Depois que o OpenCV captura um quadro, podemos passá-lo para uma biblioteca de decodificação de código de barras Python dedicada, como um ZBar, que decodifica o código de barras e o converte nas respectivas informações.
Requisitos
- Raspberry Pi 3 (qualquer versão)
- Módulo de câmera Pi
Antes de prosseguir com este leitor de código QR Raspberry Pi 3, primeiro, precisamos instalar o OpenCV, a biblioteca de decodificação de códigos de barras ZBar, imutils e algumas outras dependências neste projeto. OpenCV é usado aqui para processamento de imagem digital. As aplicações mais comuns de Processamento Digital de Imagens são detecção de objetos, Reconhecimento facial e contador de pessoas.
Instalando OpenCV no Raspberry Pi
Aqui, a biblioteca OpenCV será usada para o scanner Raspberry Pi QR. Para instalar o OpenCV, primeiro atualize o Raspberry Pi.
sudo apt-get update
Em seguida, instale as dependências necessárias para instalar o OpenCV em seu 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
Depois disso, instale o OpenCV no Raspberry Pi usando o comando abaixo.
pip3 install opencv-contrib-python == 4.1.0.25
Anteriormente, usamos o OpenCV com Raspberry pi e criamos muitos tutoriais sobre ele.
- Instalando OpenCV no Raspberry Pi usando CMake
- Reconhecimento facial em tempo real com Raspberry Pi e OpenCV
- Reconhecimento de matrículas usando Raspberry Pi e OpenCV
- Estimativa do tamanho da multidão usando OpenCV e Raspberry Pi
Também criamos uma série de tutoriais OpenCV começando no nível iniciante.
Instalando outros pacotes necessários
Instalando ZBar
Zbar é a melhor biblioteca para detectar e decodificar os diferentes tipos de códigos de barras e códigos QR. Use o comando abaixo para instalar a biblioteca:
pip3 install pyzbar
Instalando imutils
O imutils é usado para tornar as funções essenciais de processamento de imagem, como translação, rotação, redimensionamento, esqueletização e exibição de imagens Matplotlib mais fáceis com OpenCV. Use o comando abaixo para instalar os imutils:
pip3 install imutils
Instalando argparse
Use o comando abaixo para instalar a biblioteca argparse. argparse é responsável por analisar argumentos de linha de comando.
pip3 install argparse
Configuração do hardware do leitor de código QR Raspberry pi
Aqui, exigimos apenas a câmera Raspberry Pi e Pi para este scanner de código QR usando a câmera Raspberry Pi e você só precisa conectar o conector de fita da câmera no slot da câmera fornecido no Raspberry pi
A câmera Pi pode ser usada para construir vários projetos interessantes como câmera de vigilância Raspberry Pi, sistema de monitoramento de visitantes, sistema de segurança residencial, etc.
Código Python para leitor de código QR Raspberry Pi
O código completo do leitor Raspberry Pi QR é fornecido no final da página. Antes de programarmos o Raspberry Pi, vamos entender o código.
Portanto, como de costume, inicie o código importando todos os pacotes necessários.
de imutils.video import VideoStream de pyzbar import pyzbar import argparse import datetime import imutils import time import cv2
Em seguida, construa o analisador de argumentos e analise os argumentos. O argumento da linha de comando contém informações sobre o caminho do arquivo CSV. O arquivo CSV (Comma Separated Values) contém o carimbo de data / hora e a carga útil de cada código de barras de nosso stream de vídeo.
ap = argparse.ArgumentParser () ap.add_argument ("- o", "--output", type = str, default = "barcodes.csv", help = "caminho para o arquivo CSV de saída contendo códigos de barras") args = vars (ap.parse_args ())
Depois disso, inicialize o fluxo de vídeo e descomente a linha comentada se estiver usando uma webcam USB.
#vs = VideoStream (src = 0).start () vs = VideoStream (usePiCamera = True).start () time.sleep (2.0)
Agora, dentro do loop, pegue um quadro do stream de vídeo e redimensione-o para 400 pixels. Depois de capturar o quadro, chame a função pyzbar.decode para detectar e decodificar o código QR.
frame = vs.read () frame = imutils.resize (frame, width = 400) barcodes = pyzbar.decode (frame)
Agora, faça um loop sobre os códigos de barras detectados para extrair a localização do código de barras e desenhe a caixa delimitadora ao redor do código de barras na imagem.
para código de barras em códigos de barras: (x, y, w, h) = barcode.rect cv2.rectangle (frame, (x, y), (x + w, y + h), (0, 0, 255), 2)
Então decodifique o código de barras detectado em uma string "utf-8" usando a função decodificar ("utf-8") e extraia o tipo de código de barras usando a função barcode.type.
barcodeData = barcode.data.decode ("utf-8") barcodeType = barcode.type
Depois disso, salve os dados do código de barras extraídos e o tipo de código de barras dentro de uma variável chamada texto e desenhe os dados e o tipo do código de barras na imagem.
text = "{} ({})". format (barcodeData, barcodeType) cv2.putText (frame, text, (x, y - 10), cv2.FONT_HERSHEY_SIMPLEX, 0.5, (0, 0, 255), 2)
Agora exiba a saída com os dados do código de barras e o tipo de código de barras.
cv2.imshow ("Leitor de código de barras", quadro)
Agora, na última etapa, verifique se a tecla 's' foi pressionada, em seguida, quebre o loop principal e inicie o processo de limpeza.
key = cv2.waitKey (1) & 0xFF # se a tecla `s` for pressionada, interrompa o loop se key == ord (" s "): break print (" cleaning up… ") csv.close () cv2.destroyAllWindows () vs.stop ()
Testando o scanner de código QR Raspberry Pi
Assim que sua configuração estiver pronta, inicie o programa leitor de código QR. Você verá uma janela mostrando uma visualização ao vivo de sua câmera, agora você pode apresentar códigos de barras na frente da câmera PI. Quando pi decodifica um código de barras, ele desenha uma caixa vermelha ao redor dele com os dados do código de barras e o tipo de código de barras conforme mostrado na imagem abaixo:
É assim que você pode construir facilmente um leitor de código QR da câmera Raspberry Pi usando apenas a placa Raspberry Pi e a câmera Pi ou câmera USB.
Um vídeo de trabalho e o código completo para este projeto são fornecidos abaixo.