- Cerințe
- Instalarea OpenCV în Raspberry Pi
- Instalarea altor pachete necesare
- Configurare hardware Raspberry pi QR Code Reader
- Cod Python pentru Raspberry Pi QR Code Reader
- Testarea scanerului de cod QR Raspberry Pi
Codul QR (codul de răspuns rapid) este un tip de cod de bare matricial care conține informații despre elementul la care este atașat, cum ar fi date despre locație, identificator sau un tracker care identifică un site web sau o aplicație etc. Este un dispozitiv optic care poate fi citit de mașină etichetă care are forma unei imagini 2D și are un model diferit. Pentru a afla mai multe despre codurile QR și cum să generați un cod QR, urmați tutorialul nostru anterior.
În acest tutorial, vom construi un scaner de cod QR bazat pe Raspberry Pi utilizând biblioteca OpenCV și ZBar. ZBar este cea mai bună bibliotecă pentru detectarea și decodarea diferitelor tipuri de coduri de bare și coduri QR. OpenCV este folosit pentru a prelua un nou cadru dintr-un flux video și a-l procesa. Odată ce OpenCV captează un cadru, îl putem trece la o bibliotecă dedicată de decodare a codurilor de bare Python, cum ar fi un ZBar care decodează codul de bare și îl convertește în informațiile respective.
Cerințe
- Raspberry Pi 3 (orice versiune)
- Modul Camera Pi
Înainte de a continua cu acest scaner de cod QR Raspberry Pi 3, mai întâi, trebuie să instalăm OpenCV, biblioteca de decodare coduri de bare ZBar, imutils și alte dependențe în acest proiect. OpenCV este utilizat aici pentru procesarea digitală a imaginilor. Cele mai frecvente aplicații de procesare digitală a imaginilor sunt detectarea obiectelor, recunoașterea feței și contorul de persoane.
Instalarea OpenCV în Raspberry Pi
Aici biblioteca OpenCV va fi utilizată pentru scanerul QR Raspberry Pi. Pentru a instala OpenCV, mai întâi, actualizați Raspberry Pi.
sudo apt-get update
Apoi instalați dependențele necesare pentru instalarea OpenCV pe 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
După aceea, instalați OpenCV în Raspberry Pi folosind comanda de mai jos.
pip3 instalează opencv-contrib-python == 4.1.0.25
Am folosit anterior OpenCV cu Raspberry pi și am creat o mulțime de tutoriale pe el.
- Instalarea OpenCV pe Raspberry Pi folosind CMake
- Recunoaștere a feței în timp real cu Raspberry Pi și OpenCV
- Recunoașterea plăcuței de înmatriculare utilizând Raspberry Pi și OpenCV
- Estimarea dimensiunii mulțimii folosind OpenCV și Raspberry Pi
De asemenea, am creat o serie de tutoriale OpenCV începând de la nivelul pentru începători.
Instalarea altor pachete necesare
Instalarea ZBar
Zbar este cea mai bună bibliotecă pentru detectarea și decodarea diferitelor tipuri de coduri de bare și coduri QR. Utilizați comanda de mai jos pentru a instala biblioteca:
pip3 instalează pyzbar
Instalarea imutilelor
imutils este folosit pentru a face funcții esențiale de procesare a imaginilor, cum ar fi traducerea, rotația, redimensionarea, scheletizarea și afișarea imaginilor Matplotlib mai ușor cu OpenCV. Utilizați comanda de mai jos pentru a instala imutils:
pip3 instalează imutils
Instalarea argparse
Utilizați comanda de mai jos pentru a instala biblioteca argparse. argparse este responsabil pentru analizarea argumentelor din linia de comandă.
pip3 instalează argparse
Configurare hardware Raspberry pi QR Code Reader
Aici avem nevoie doar de camera Raspberry Pi și Pi pentru acest scaner de cod QR folosind camera Raspberry Pi și trebuie doar să atașați conectorul panglicii camerei în slotul camerei furnizat în Raspberry pi
Camera Pi poate fi utilizată pentru a construi diverse proiecte interesante, cum ar fi camera de supraveghere Raspberry Pi, sistemul de monitorizare a vizitatorilor, sistemul de securitate la domiciliu etc.
Cod Python pentru Raspberry Pi QR Code Reader
Codul complet pentru cititorul QR Raspberry Pi este dat la sfârșitul paginii. Înainte de a programa Raspberry Pi, să înțelegem codul.
Deci, ca de obicei, porniți codul importând toate pachetele necesare.
din imutils.video import VideoStream din pyzbar import pyzbar import argparse import datetime import imutils import timp import cv2
Apoi construiți parserul argumentelor și analizați argumentele. Argumentul Linie de comandă conține informații despre calea fișierului CSV. Fișierul CSV (Valori separate prin virgulă) conține marcajul de timp și sarcina utilă a fiecărui cod de bare din fluxul nostru video.
ap = argparse.ArgumentParser () ap.add_argument ("- o", "--output", type = str, default = "barcodes.csv", help = "calea către ieșirea fișierului CSV care conține coduri de bare") args = vars (ap.parse_args ())
După aceea, inițializați fluxul video și decomentați linia comentată dacă utilizați camera web USB.
#vs = VideoStream (src = 0).start () vs = VideoStream (usePiCamera = True).start () time.sleep (2.0)
Acum, în buclă, luați un cadru din fluxul video și redimensionați-l la 400 de pixeli. Odată ce apucă cadrul, apelați funcția pyzbar.decode pentru a detecta și decoda codul QR.
cadru = vs.citit () cadru = imutils.resize (cadru, lățime = 400) coduri de bare = pyzbar.decode (cadru)
Acum, faceți o buclă peste codurile de bare detectate pentru a extrage locația codului de bare și trageți caseta de delimitare în jurul codului de bare de pe imagine.
pentru coduri de bare în coduri de bare: (x, y, w, h) = barcode.rect cv2.rectangle (cadru, (x, y), (x + w, y + h), (0, 0, 255), 2)
Apoi decodificați codul de bare detectat într-un șir „utf-8” folosind funcția decodează („utf-8”) și apoi extrageți tipul de cod de bare folosind funcția de cod de bare.tip.
barcodeData = barcode.data.decode ("utf-8") barcodeType = barcode.type
După aceea, salvați datele codului de bare extrase și tipul codului de bare într-o variabilă numită text și desenați datele și tipul codului de bare pe imagine.
text = "{} ({})". format (barcodeData, barcodeType) cv2.putText (cadru, text, (x, y - 10), cv2.FONT_HERSHEY_SIMPLEX, 0.5, (0, 0, 255), 2)
Afișați acum ieșirea cu datele codului de bare și tipul codului de bare.
cv2.imshow („Cititor de coduri de bare”, cadru)
Acum, în ultimul pas, verificați dacă este apăsată tasta 's', apoi rupeți bucla principală și începeți procesul de curățare.
key = cv2.waitKey (1) & 0xFF # dacă se apasă tasta `s`, rupeți din buclă dacă tasta == ord (" s "): rupeți tipărirea (" curățarea… ") csv.close () cv2.destroyAllWindows () vs.stop ()
Testarea scanerului de cod QR Raspberry Pi
Odată ce configurarea este gata, lansați programul de citire a codului QR. Veți vedea o fereastră care arată o vizualizare live de pe camera dvs., acum puteți prezenta coduri de bare în fața camerei PI. Când pi decodifică un cod de bare, acesta va desena o casetă roșie în jurul acestuia, cu date de coduri de bare și tip de cod de bare, așa cum se arată în imaginea de mai jos:
Acesta este modul în care puteți construi cu ușurință un cititor de coduri QR pentru camera Raspberry Pi doar folosind placa Raspberry Pi și camera Pi sau camera USB.
Un videoclip de lucru și un cod complet pentru acest proiect sunt prezentate mai jos.