Pular para o conteúdo principal

Instrução de Orientação

Planning da Sprint 3

1. Objetivos

  • Planejamento da Sprint 3.
  • Retomada dos conceitos de eletricidade básica.
  • [NOVO] Leitura de QrCode com Python.

2. Slides do Encontro

3. Material de Autoestudo

Acesse a Adalove!

Esse material NÃO substitui de forma alguma o uso da Adalove. Você DEVE entrar na Adalove com frequência e REGISTRAR O SEU PROGRESSO. Entendeu? Ainda não? Pera aí que vou desenhar:

ACESSE A ADALOVE
Arduino Course for Beginners - Open-Source Electronics Platform - Seção 2 - Fundamentos de Eletrônica
Arduino Course for Beginners - Open-Source Electronics Platform - Seção 5 - Como utilizar protoboards

4. Material de Aula

4.1 Eletricidade Básica

Verificar o material da apresentação abaixo!

4.2 Leitura de QrCode com Python

Pessoal, devido a demanda bastante alta em utilizar a leitura e acompanhamento de QrCode, vamos fazer um encontro de orientação para que vocês possam entender como fazer isso.

CUIDADO

Todo o material desenvolvido pode ser utilizado para realizar a leitura de códigos QrCode e teoricamente de códigos de barras. Entretanto, a utilização de códigos de barras não foi testada com exito. Sugiro que vocês utilizem o material e adicionem uma consideração de utilizar, para a PoC, apenas códigos QrCode criados por vocês.

4.2.1 Instalação e Utilização da Biblioteca QReader

Existem diversas bibliotecas que podem ser utilizadas para realizar a leitura de QrCode. Entretanto, a que vamos utilizar é a QReader, que é uma forma encapsulada de utilizar o pyzbar.

Detalhes sobre a forma que a biblioteca utiliza as ferramentas internas serão adicionadas posteriormente.

Para utilizar o QReader vocês precisam instalar a biblioteca. Para isso, utilizem o comando:

pip install qreader
Instalação

O documentação da biblioteca pode ser acessada no link. Durante a instalação vocês podem encontrar problemas com alguma dependência. No caso do Windows, foi necessário realizar a instalação do vcredist_x64.exe.

Para o MacOS, foi necessário realizar a instalação do zbar. Utilizar o comando:

brew install zbar

Agora que vocês já instalaram a biblioteca, vamos realizar a leitura de um QrCode. Para isso, utilizem o código abaixo:

# Teste QReader
from qreader import QReader
import cv2

# Create a QReader instance
qreader = QReader(
model_size = 'l', min_confidence = 0.5
)

# Get the image that contains the QR code
image = cv2.cvtColor(cv2.imread("image.png"), cv2.COLOR_BGR2RGB)

# Use the detect_and_decode function to get the decoded QR data
decoded_text = qreader.detect_and_decode(image=image)

# Print the decoded text
print(decoded_text)

Os modelos que podem ser utilizados para o sistema são:

QReader(model_size = 's', min_confidence = 0.5, reencode_to = 'shift-jis') This is the main class of the library. Please, try to instantiate it just once to avoid loading the model every time you need to detect a QR code. model_size: str. The size of the model to use. It can be 'n' (nano), 's' (small), 'm' (medium) or 'l' (large). Larger models are more accurate but slower. Default: 's'. min_confidence: float. The minimum confidence of the QR detection to be considered valid. Values closer to 0.0 can get more False Positives, while values closer to 1.0 can lose difficult QRs. Default (and recommended): 0.5. reencode_to: str | None. The encoding to reencode the utf-8 decoded QR string. If None, it won't re-encode. If you find some characters being decoded incorrectly, try to set a Code Page that matches your specific charset. Recommendations that have been found useful: 'shift-jis' for Germanic languages and 'cp65001' for Asian languages (Thanks to @nguyen-viet-hung for the suggestion)

4.2.2 Utilização da Biblioteca QReader em conjunto com a Webcam

Agora que conseguimos fazer a leitura do QrCode, vamos fazer a leitura de um QrCode utilizando a webcam. Essa leitura pode ser realizada utilizando a biblioteca opencv-python. Ela permite a manipulação de imagens e vídeos.

Vamos avaliar o código abaixo:

# import the opencv library 
import cv2

# QReader
from qreader import QReader

# Create a QReader instance
qreader = QReader(
model_size = 'l', min_confidence = 0.5
)

# define a video capture object
vid = cv2.VideoCapture(1)

# Capture the video frame
# by frame

print("Capturando imagem...")
ret, frame = vid.read()

# Save the frame into an image file
print("Salvando imagem...")
cv2.imwrite('image.png', frame)

# After the loop release the cap object
vid.release()

# Realiza a leitura do QRCode
print("Processando imagem...")
image = cv2.cvtColor(cv2.imread("image.png"), cv2.COLOR_BGR2RGB)
# image = cv2.cvtColor(cv2.imread("teste-barcode-2.jpg"), cv2.COLOR_BGR2RGB)

# Utilizando o QReader
# Use the detect_and_decode function to get the decoded QR data
decoded_text = qreader.detect_and_decode(image=image)

# Print the decoded text
print(decoded_text)

Pontos mais relevantes do código acima:

  • A linha qreader = QReader(model_size = 'l', min_confidence = 0.5) cria uma instância do QReader, utilizando o modelo de tamanho l e a confiança mínima de 0.5.

  • A linha vid = cv2.VideoCapture(1) define que a captura de imagem será realizada pela webcam. Caso você tenha mais de uma webcam, você pode alterar o valor do parâmetro para 0 ou 2.

  • A linha ret, frame = vid.read() realiza a captura da imagem.

  • A linha cv2.imwrite('image.png', frame) salva a imagem capturada em um arquivo.

  • A linha image = cv2.cvtColor(cv2.imread("image.png"), cv2.COLOR_BGR2RGB) realiza a leitura da imagem e a transforma em um array de pixels.

  • A linha decoded_text = qreader.detect_and_decode(image=image) realiza a leitura do QrCode.