- Požadavky
- Instalace OpenCV na Raspberry Pi
- Instalace dalších požadovaných balíčků
- Nastavení hardwaru čtečky QR kódů Raspberry pi
- Pythonský kód pro čtečku QR kódů Raspberry Pi
- Testování skeneru QR kódů Raspberry Pi
QR code (Quick Response code) is a type of matrix barcode that contains information about the item to which it is attached, like location data, identifier, or a tracker that identifys a website or app, etc. It is a machine-readable optical štítek, který je ve formě 2D obrazu a má jiný vzor. Další informace o QR kódech a o tom, jak generovat QR kód, najdete v našem předchozím kurzu.
V tomto tutoriálu budeme stavět skener QR kódů založený na Raspberry Pi pomocí knihovny OpenCV a ZBar. ZBar je nejlepší knihovna pro detekci a dekódování různých typů čárových kódů a QR kódů. OpenCV se používá k získání nového snímku z video streamu a jeho zpracování. Jakmile OpenCV zachytí snímek, můžeme jej předat vyhrazené knihovně dekódování čárových kódů Pythonu, jako je ZBar, která dekóduje čárový kód a převede jej na příslušné informace.
Požadavky
- Raspberry Pi 3 (libovolná verze)
- Modul kamery Pi
Před pokračováním v tomto skeneru QR kódů Raspberry Pi 3 je nejprve nutné v tomto projektu nainstalovat OpenCV, knihovnu dekódování čárových kódů ZBar, imutils a některé další závislosti. OpenCV se zde používá pro digitální zpracování obrazu. Nejběžnějšími aplikacemi digitálního zpracování obrazu jsou detekce objektů, rozpoznávání tváře a počítadlo osob.
Instalace OpenCV na Raspberry Pi
Zde bude knihovna OpenCV použita pro skener QR Raspberry Pi. Chcete-li nainstalovat OpenCV, nejprve aktualizujte Raspberry Pi.
sudo apt-get aktualizace
Poté nainstalujte na Raspberry Pi požadované závislosti pro instalaci OpenCV.
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 nainstalovat libqt4-test –y
Poté nainstalujte OpenCV do Raspberry Pi pomocí níže uvedeného příkazu.
pip3 nainstalujte opencv-contrib-python == 4.1.0.25
Dříve jsme OpenCV používali s Raspberry pi a vytvořili jsme k nim spoustu návodů.
- Instalace OpenCV na Raspberry Pi pomocí CMake
- Rozpoznávání tváře v reálném čase s Raspberry Pi a OpenCV
- Rozpoznávání SPZ pomocí Raspberry Pi a OpenCV
- Odhad velikosti davu pomocí OpenCV a Raspberry Pi
Také jsme vytvořili řadu výukových programů OpenCV od úrovně pro začátečníky.
Instalace dalších požadovaných balíčků
Instalace ZBar
Zbar je nejlepší knihovna pro detekci a dekódování různých typů čárových kódů a QR kódů. K instalaci knihovny použijte následující příkaz:
pip3 nainstalujte pyzbar
Instalace imutilů
imutils se používá k usnadnění základních funkcí zpracování obrazu, jako je překlad, rotace, změna velikosti, skeletonizace a zobrazení obrázků Matplotlib jednodušší s OpenCV. K instalaci imutils použijte následující příkaz:
pip3 nainstalujte imutils
Instalace argparse
Pomocí níže uvedeného příkazu nainstalujte knihovnu argparse. argparse je zodpovědný za analýzu argumentů příkazového řádku.
pip3 install argparse
Nastavení hardwaru čtečky QR kódů Raspberry pi
Zde vyžadujeme pouze kameru Raspberry Pi a Pi pro tento skener QR kódů používající kameru Raspberry Pi a stačí připojit plochý konektor fotoaparátu do slotu kamery uvedeného v Raspberry pi
Kameru Pi lze použít k vytváření různých zajímavých projektů, jako je Raspberry Pi Surveillance Camera, Visitor Monitoring System, Home Security System atd.
Pythonský kód pro čtečku QR kódů Raspberry Pi
Celý kód pro čtečku QR Raspberry Pi je uveden na konci stránky. Než naprogramujeme Raspberry Pi, pochopme kód.
Jako obvykle tedy spusťte kód importem všech požadovaných balíčků.
z imutils.video import VideoStream z pyzbar import pyzbar import argparse import datetime import imutils čas importu import cv2
Poté vytvořte analyzátor argumentů a analyzujte argumenty. Argument příkazového řádku obsahuje informace o cestě k souboru CSV. Soubor CSV (Comma Separated Values) obsahuje časové razítko a užitečné zatížení každého čárového kódu z našeho video streamu.
ap = argparse.ArgumentParser () ap.add_argument ("- o", "--output", type = str, default = "barcodes.csv", help = "cesta k výstupu souboru CSV obsahujícího čárové kódy") args = vars (ap.parse_args ())
Poté inicializujte videostream a odkomentujte komentovaný řádek, pokud používáte webovou kameru USB.
#vs = VideoStream (src = 0).start () vs = VideoStream (usePiCamera = True).start () time.sleep (2.0)
Nyní uvnitř smyčky uchopte rám z video streamu a změňte jeho velikost na 400 pixelů. Jakmile chytne rámeček, zavolejte funkci pyzbar.decode, abyste zjistili a dekódovali QR kód.
frame = vs.read () frame = imutils.resize (frame, width = 400) barcodes = pyzbar.decode (frame)
Nyní smyčkou přes detekované čárové kódy extrahujte umístění čárového kódu a nakreslete ohraničující rámeček kolem čárového kódu na obrázku.
pro čárový kód v čárových kódech: (x, y, w, h) = barcode.rect cv2.rectangle (frame, (x, y), (x + w, y + h), (0, 0, 255), 2)
Poté dekódujte detekovaný čárový kód do řetězce „utf-8“ pomocí funkce dekódování („utf-8“) a poté extrahujte typ čárového kódu pomocí funkce barcode.type.
barcodeData = barcode.data.decode ("utf-8") barcodeType = barcode.type
Poté uložte extrahovaná data čárového kódu a typ čárového kódu do proměnné s názvem text a nakreslete data a typ čárového kódu na obrázek.
text = "{} ({})". format (barcodeData, barcodeType) cv2.putText (frame, text, (x, y - 10), cv2.FONT_HERSHEY_SIMPLEX, 0,5, (0, 0, 255), 2)
Nyní zobrazte výstup s daty čárového kódu a typem čárového kódu.
cv2.imshow ("Čtečka čárových kódů", rámeček)
Nyní v posledním kroku zkontrolujte, zda je stisknuto tlačítko 's', poté vylomte hlavní smyčku a spusťte proces čištění.
key = cv2.waitKey (1) & 0xFF # pokud je stisknuto tlačítko `s`, přerušit smyčku, pokud key == ord (" s "): break print (" clean up… ") csv.close () cv2.destroyAllWindows () vs. stop ()
Testování skeneru QR kódů Raspberry Pi
Jakmile je vaše nastavení připraveno, spusťte program pro čtení QR kódů. Uvidíte okno zobrazující živý pohled z kamery, nyní můžete před PI kameru prezentovat čárové kódy. Když pi dekóduje čárový kód, nakreslí kolem něj červené pole s údaji o čárovém kódu a typu čárového kódu, jak je znázorněno na následujícím obrázku:
Takto můžete snadno vytvořit čtečku QR kódů kamery Raspberry Pi pouhým použitím desky Raspberry Pi a kamery Pi nebo kamery USB.
Níže je uvedeno pracovní video a kompletní kód tohoto projektu.