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
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:
- 📘 Autoestudos Obrigatórios
- 📔 Autoestudos Opcionais
- 📓 Autoestudos Adicionais
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.
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
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 tamanhol
e a confiança mínima de0.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 para0
ou2
. -
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.