- Požiadavky
- Inštalácia OpenCV na Raspberry Pi
- Inštalácia ďalších požadovaných balíkov
- Hardvérové nastavenie čítačky QR kódov maliny pi
- Pythonský kód pre čítačku QR kódov Raspberry Pi
- Testovanie skenera QR kódov Raspberry Pi
QR kód (kód rýchlej odpovede) je typ čiarového kódu matice, ktorý obsahuje informácie o položke, ku ktorej je pripojený, ako sú údaje o polohe, identifikátor alebo sledovač, ktorý identifikuje web alebo aplikáciu atď. Je to strojovo čitateľný optický štítok, ktorý je vo forme 2D obrázka a má iný vzor. Ak sa chcete dozvedieť viac informácií o QR kódoch a o tom, ako vygenerovať QR kód, postupujte podľa nášho predchádzajúceho tutoriálu.
V tomto výučbe sa chystáme zostaviť skener QR kódov na báze Raspberry Pi pomocou knižnice OpenCV a ZBar. ZBar je najlepšia knižnica na detekciu a dekódovanie rôznych typov čiarových kódov a QR kódov. OpenCV sa používa na získanie novej snímky z videostreamu a jej spracovanie. Akonáhle OpenCV zachytí rámec, potom ho môžeme odovzdať do vyhradenej knižnice na dekódovanie čiarových kódov Pythonu, ako je napríklad ZBar, ktorá dekóduje čiarový kód a prevádza ho na príslušné informácie.
Požiadavky
- Raspberry Pi 3 (ľubovoľná verzia)
- Modul kamery Pi
Pred pokračovaním v tomto skeneri QR kódov Raspberry Pi 3 si najskôr musíme do tohto projektu nainštalovať OpenCV, knižnicu dekódovania čiarových kódov ZBar, imutils a niektoré ďalšie závislosti. OpenCV sa tu používa na digitálne spracovanie obrazu. Najbežnejšie aplikácie digitálneho spracovania obrazu sú detekcia objektov, rozpoznávanie tváre a počítanie osôb.
Inštalácia OpenCV na Raspberry Pi
Tu sa použije knižnica OpenCV pre skener QR Raspberry Pi. Ak chcete nainštalovať OpenCV, najskôr aktualizujte Raspberry Pi.
sudo apt-get aktualizácia
Potom nainštalujte požadované závislosti pre inštaláciu OpenCV na vašom 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 nainštalovať libqt4-test –y
Potom nainštalujte OpenCV na Raspberry Pi pomocou nižšie uvedeného príkazu.
pip3 nainštaluj opencv-contrib-python == 4.1.0.25
Predtým sme používali program OpenCV s programom Raspberry pi a vytvorili sme k nemu množstvo návodov.
- Inštalácia OpenCV na Raspberry Pi pomocou CMake
- Rozpoznávanie tváre v reálnom čase s Raspberry Pi a OpenCV
- Rozpoznávanie ŠPZ pomocou Raspberry Pi a OpenCV
- Odhad veľkosti davu pomocou OpenCV a Raspberry Pi
Tiež sme vytvorili sériu tutoriálov OpenCV začínajúcich od úrovne začiatočníkov.
Inštalácia ďalších požadovaných balíkov
Inštalácia ZBar
Zbar je najlepšia knižnica na detekciu a dekódovanie rôznych typov čiarových kódov a QR kódov. Na inštaláciu knižnice použite nasledujúci príkaz:
nainštalovať pyzbar
Inštalácia imutilov
imutils sa používa na uľahčenie základných funkcií spracovania obrazu, ako je preklad, rotácia, zmena veľkosti, skeletonizácia a jednoduchšie zobrazovanie obrázkov Matplotlib pomocou OpenCV. Pomocou nižšie uvedeného príkazu nainštalujte imutils:
pip3 nainštalovať imutils
Inštalácia argparse
Pomocou nižšie uvedeného príkazu nainštalujte knižnicu argparse. argparse je zodpovedný za analýzu argumentov príkazového riadku.
pip3 nainštalovať argparse
Hardvérové nastavenie čítačky QR kódov maliny pi
Tu vyžadujeme iba kameru Raspberry Pi a Pi pre tento skener QR kódov používajúci kameru Raspberry Pi a stačí pripojiť plochý konektor fotoaparátu do slotu pre kameru uvedeného v Raspberry pi
Kameru Pi je možné použiť na stavbu rôznych zaujímavých projektov, ako je napríklad Raspberry Pi Surveillance Camera, Visitor Monitoring System, Home Security System atď.
Pythonský kód pre čítačku QR kódov Raspberry Pi
Kompletný kód pre čítačku QR Raspberry Pi je uvedený na konci stránky. Predtým, ako naprogramujeme Raspberry Pi, pochopme kód.
Ako obvykle teda spustite kód importom všetkých požadovaných balíkov.
z imutils.video import VideoStream z pyzbar import pyzbar import argparse import datetime import imutils import čas import cv2
Potom zostrojte syntaktický analyzátor argumentov a analyzujte argumenty. Argument príkazového riadku obsahuje informácie o ceste k súboru CSV. Súbor CSV (Comma Separated Values) obsahuje časovú značku a užitočné zaťaženie každého čiarového kódu z nášho videostreamu.
ap = argparse.ArgumentParser () ap.add_argument ("- o", "--output", type = str, default = "barcodes.csv", help = "cesta k výstupu súboru CSV s čiarovými kódmi") args = vars (ap.parse_args ())
Potom inicializujte videostream a odkomentujte komentovaný riadok, ak používate webovú kameru USB.
#vs = VideoStream (src = 0).start () vs = VideoStream (usePiCamera = True).start () time.sleep (2.0)
Teraz vo vnútri slučky uchopte rámček z videostreamu a upravte jeho veľkosť na 400 pixelov. Len čo chytí rám, zavolajte funkciu pyzbar.decode, aby ste zistili a dekódovali QR kód.
frame = vs.read () frame = imutils.resize (frame, width = 400) barcodes = pyzbar.decode (frame)
Teraz urobte slučku nad detekovanými čiarovými kódmi, aby ste extrahovali umiestnenie čiarového kódu, a nakreslite ohraničovacie políčko okolo čiarového kódu na obrázku.
pre čiarový kód v čiarových kódoch: (x, y, w, h) = barcode.rect cv2.rectangle (frame, (x, y), (x + w, y + h), (0, 0, 255), 2)
Potom pomocou funkcie decode ("utf-8") dekódujte zistený čiarový kód na reťazec "utf-8" a typ čiarového kódu potom extrahujte pomocou funkcie barcode.type.
barcodeData = barcode.data.decode ("utf-8") barcodeType = barcode.type
Potom uložte extrahované údaje čiarového kódu a typ čiarového kódu do premennej s názvom text a nakreslite údaje a typ čiarového kódu do obrázka.
text = "{} ({})". format (barcodeData, barcodeType) cv2.putText (rám, text, (x, y - 10), cv2.FONT_HERSHEY_SIMPLEX, 0,5, (0, 0, 255), 2)
Teraz zobrazte výstup s údajmi o čiarovom kóde a typom čiarového kódu.
cv2.imshow (rám, čítačka čiarových kódov)
Teraz v poslednom kroku skontrolujte, či je stlačené tlačidlo „s“, potom vylomte hlavnú slučku a začnite proces čistenia.
key = cv2.waitKey (1) & 0xFF # ak je stlačené tlačidlo `s`, prerušiť zo slučky, ak key == ord (" s "): break print (" clean up… ") csv.close () cv2.destroyAllWindows () vs. stop ()
Testovanie skenera QR kódov Raspberry Pi
Po dokončení nastavenia spustite program čítačky QR kódov. Uvidíte okno so živým náhľadom kamery, teraz môžete pred čiarovú kameru umiestniť čiarové kódy. Keď pi dekóduje čiarový kód, nakreslí okolo neho červené políčko s údajmi o čiarovom kóde a typom čiarového kódu, ako je znázornené na obrázku nižšie:
Takto môžete ľahko zostaviť čítačku QR kódov kamery Raspberry Pi iba pomocou dosky Raspberry Pi a kamery Pi alebo USB fotoaparátu.
Nižšie je uvedené pracovné video a kompletný kód tohto projektu.