- Requisits
- Instal·lació d’OpenCV a Raspberry Pi
- Instal·lació d'altres paquets necessaris
- Configuració del maquinari del lector de codis QR de Raspberry pi
- Codi Python per al lector de codis QR Raspberry Pi
- Prova de l’escàner de codis QR de Raspberry Pi
El codi QR (codi de resposta ràpida) és un tipus de codi de barres matricial que conté informació sobre l’element al qual està connectat, com ara dades d’ubicació, identificador o un rastrejador que identifica un lloc web o una aplicació, etc. etiqueta que té la forma d’una imatge 2D i té un patró diferent. Per obtenir més informació sobre els codis QR i com generar un codi QR, seguiu el nostre tutorial anterior.
En aquest tutorial, crearem un escàner de codis QR basat en Raspberry Pi mitjançant la biblioteca OpenCV i ZBar. ZBar és la millor biblioteca per detectar i descodificar els diferents tipus de codis de barres i codis QR. OpenCV s’utilitza per agafar un nou marc d’un flux de vídeo i processar-lo. Un cop OpenCV captura un marc, el podem passar a una biblioteca de descodificació de codis de barres Python dedicada, com ara una ZBar, que descodifica el codi de barres i el converteix en informació respectiva.
Requisits
- Raspberry Pi 3 (qualsevol versió)
- Mòdul de càmera Pi
Abans de continuar amb aquest escàner de codis QR de Raspberry Pi 3, primer hem d’instal·lar OpenCV, la biblioteca de descodificació de codis de barres ZBar, imutils i algunes altres dependències d’aquest projecte. Aquí s’utilitza OpenCV per al processament d’imatges digitals. Les aplicacions més habituals del processament d’imatges digitals són la detecció d’objectes, el reconeixement de cares i el comptador de persones.
Instal·lació d’OpenCV a Raspberry Pi
Aquí s’utilitzarà la biblioteca OpenCV per a l’escàner QR Raspberry Pi. Per instal·lar l'OpenCV, primer, actualitzeu el Raspberry Pi.
sudo apt-get update
A continuació, instal·leu les dependències necessàries per instal·lar OpenCV al vostre 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
Després, instal·leu l'OpenCV a Raspberry Pi mitjançant l'ordre següent.
pip3 instal·la opencv-contrib-python == 4.1.0.25
Anteriorment hem utilitzat OpenCV amb Raspberry pi i hi hem creat molts tutorials.
- Instal·lació d’OpenCV a Raspberry Pi mitjançant CMake
- Reconeixement facial en temps real amb Raspberry Pi i OpenCV
- Reconeixement de matrícules mitjançant Raspberry Pi i OpenCV
- Estimació de la mida de la multitud mitjançant OpenCV i Raspberry Pi
També hem creat una sèrie de tutorials OpenCV a partir del nivell per a principiants.
Instal·lació d'altres paquets necessaris
Instal·lació de ZBar
Zbar és la millor biblioteca per detectar i descodificar els diferents tipus de codis de barres i codis QR. Utilitzeu l'ordre següent per instal·lar la biblioteca:
pip3 instal·la pyzbar
Instal·lació d’ imutils
imutils s’utilitza per fer funcions essencials de processament d’imatges, com ara traducció, rotació, redimensionament, esqueletització i visualització d’imatges Matplotlib amb OpenCV. Utilitzeu l'ordre següent per instal·lar els imutils:
pip3 instal·lar imutils
Instal·lació d' argparse
Utilitzeu l'ordre següent per instal·lar la biblioteca argparse. argparse és responsable d’analitzar arguments de la línia d’ordres.
pip3 instal·la argparse
Configuració del maquinari del lector de codis QR de Raspberry pi
Aquí només necessitem càmera Raspberry Pi i Pi per a aquest escàner de codi QR que utilitza la càmera Raspberry Pi i només heu d’adjuntar el connector de la cinta de la càmera a la ranura de la càmera que es mostra al Raspberry pi

La càmera Pi es pot utilitzar per construir diversos projectes interessants com la càmera de vigilància Raspberry Pi, el sistema de control de visitants, el sistema de seguretat domèstica, etc.
Codi Python per al lector de codis QR Raspberry Pi
El codi complet del lector QR de Raspberry Pi es dóna al final de la pàgina. Abans de programar el Raspberry Pi, entenem el codi.
Per tant, com és habitual, inicieu el codi important tots els paquets necessaris.
des d'imutils.video importació VideoStream des de pyzbar importació pyzbar importació argparse importació datetime importació imutils importació temps importació cv2
A continuació, construïu l'analitzador d'arguments i analitzeu-ne els arguments. L'argument de línia d'ordres conté informació sobre la ruta del fitxer CSV. El fitxer CSV (Valors separats per comes) conté la marca de temps i la càrrega útil de cada codi de barres del nostre flux de vídeo.
ap = argparse.ArgumentParser () ap.add_argument ("- o", "--output", type = str, default = "barcodes.csv", help = "ruta de sortida del fitxer CSV que conté codis de barres") args = vars (ap.parse_args ())
Després, inicialitzeu el flux de vídeo i descomenteu la línia comentada si feu servir una càmera web USB.
#vs = VideoStream (src = 0).start () vs = VideoStream (usePiCamera = True).start () time.sleep (2.0)
Ara dins del bucle, agafeu un fotograma del flux de vídeo i canvieu-lo a 400 píxels. Un cop agafat el marc, truqueu a la funció pyzbar.decode per detectar i descodificar el codi QR.
frame = vs.read () frame = imutils.resize (frame, width = 400) codis de barres = pyzbar.decode (frame)
Ara, feu un bucle sobre els codis de barres detectats per extreure la ubicació del codi de barres i dibuixeu el quadre delimitador al voltant del codi de barres de la imatge.
per a codis de barres en codis de barres: (x, y, w, h) = barcode.rect cv2.rectangle (frame, (x, y), (x + w, y + h), (0, 0, 255), 2)

A continuació, descodifiqueu el codi de barres detectat en una cadena "utf-8" mitjançant la funció de descodificació ("utf-8") i, a continuació, extreu el tipus de codi de barres mitjançant la funció de codi de barres.type.
barcodeData = barcode.data.decode ("utf-8") barcodeType = barcode.type
Després, deseu les dades i el tipus de codi de barres extrets dins d’una variable anomenada text i dibuixeu les dades i el tipus de codi de barres a la imatge.
text = "{} ({})". format (barcodeData, barcodeType) cv2.putText (marc, text, (x, y - 10), cv2.FONT_HERSHEY_SIMPLEX, 0.5, (0, 0, 255), 2)

Ara mostreu la sortida amb les dades del codi de barres i el tipus de codi de barres.
cv2.imshow ("Lector de codis de barres", marc)

Ara, a l'últim pas, comproveu si es prem la tecla 's', despengeu el bucle principal i inicieu el procés de neteja.
key = cv2.waitKey (1) & 0xFF # si es prem la tecla `s`, desvincular-se del bucle si la tecla == ord (" s "): interrompre la impressió (" netejar… ") csv.close () cv2.destroyAllWindows () vs.stop ()
Prova de l’escàner de codis QR de Raspberry Pi
Quan la configuració estigui llesta, inicieu el programa lector de codis QR. Veureu una finestra que mostra una visualització en directe des de la càmera, ara podeu presentar codis de barres davant de la càmera PI. Quan pi descodifica un codi de barres, dibuixarà un quadre vermell al voltant amb dades de codi de barres i tipus de codi de barres, tal com es mostra a la imatge següent:

Així és com podeu crear fàcilment un lector de codis QR de la càmera Raspberry Pi només amb la targeta Raspberry Pi i la càmera Pi o la càmera USB.
A continuació es mostra un vídeo de treball i un codi complet per a aquest projecte.
