- Követelmények
- Az OpenCV telepítése a Raspberry Pi programba
- Más szükséges csomagok telepítése
- Raspberry pi QR Code Reader hardver beállítása
- Python kód a Raspberry Pi QR Code Readerhez
- A Raspberry Pi QR Code Scanner tesztelése
A QR-kód (Gyorsreagálású kód) egy olyan mátrix vonalkód, amely információkat tartalmaz az elemről, amelyhez kapcsolódik, például helyadatokat, azonosítót vagy nyomkövetőt, amely azonosítja a webhelyet vagy alkalmazást stb. Ez egy géppel olvasható optikai címke, amely 2D kép formájában van, és más mintájú. Ha többet szeretne megtudni a QR-kódokról és a QR-kód előállításáról, kövesse az előző bemutatónkat.
Ebben az oktatóanyagban egy Raspberry Pi alapú QR kódolvasót készítünk az OpenCV és a ZBar könyvtár segítségével. A ZBar a legjobb könyvtár a különféle vonalkódok és QR kódok felderítésére és dekódolására. Az OpenCV-t arra használják, hogy új képkockát ragadjon le egy videófolyamról, és feldolgozza azt. Amint az OpenCV rögzít egy keretet, akkor átadhatjuk egy dedikált Python vonalkód dekódoló könyvtárnak, például egy ZBarnak, amely dekódolja a vonalkódot, és átalakítja a megfelelő információvá.
Követelmények
- Raspberry Pi 3 (bármilyen verzió)
- Pi kamera modul
Mielőtt folytatnánk ezt a Raspberry Pi 3 QR kódolvasót, először telepítenünk kell az OpenCV-t, a vonalkód dekódoló ZBar könyvtárat, az imutilokat és néhány más függőséget ebben a projektben. Az OpenCV-t itt használják digitális képfeldolgozásra. A digitális képfeldolgozás leggyakoribb alkalmazásai az objektumfelismerés, az arcfelismerés és az emberek számlálója.
Az OpenCV telepítése a Raspberry Pi programba
Itt az OpenCV könyvtárat fogják használni a Raspberry Pi QR-leolvasóhoz. Az OpenCV telepítéséhez először frissítse a Raspberry Pi programot.
sudo apt-get frissítés
Ezután telepítse az OpenCV telepítéséhez szükséges függőségeket a Raspberry Pi készülékére.
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-teszt -y
Ezt követően telepítse az OpenCV-t a Raspberry Pi programba az alábbi paranccsal.
pip3 install opencv-contrib-python == 4.1.0.25
Korábban az OpenCV-t használtuk a Raspberry pi-vel, és rengeteg oktatóanyagot készítettünk rajta.
- Az OpenCV telepítése a Raspberry Pi-re a CMake segítségével
- Valós idejű arcfelismerés Raspberry Pi-vel és OpenCV-vel
- Rendszámfelismerés Raspberry Pi és OpenCV használatával
- A tömeg méretének becslése OpenCV és Raspberry Pi használatával
Létrehoztunk egy sor OpenCV oktatóanyagot a kezdő szinttől kezdve.
Más szükséges csomagok telepítése
A ZBar telepítése
A Zbar a legjobb könyvtár a különféle vonalkódok és QR kódok felderítésére és dekódolására. A könyvtár telepítéséhez használja az alábbi parancsot:
pip3 telepítse a pyzbar-t
Az imutilok telepítése
Az imutils segítségével alapvető képfeldolgozó funkciókat készítenek, például fordítást, forgatást, átméretezést, csontvázizást és a Matplotlib képek egyszerűbb megjelenítését az OpenCV segítségével. Az imutils telepítéséhez használja az alábbi parancsot:
pip3 telepítse az imutilokat
Az argparse telepítése
Az alábbi paranccsal telepítse az argparse könyvtárat. Az argparse felelős a parancssori argumentumok elemzéséért.
pip3 install argparse
Raspberry pi QR Code Reader hardver beállítása
Itt csak a Raspberry Pi és a Pi kamerára van szükségünk ehhez a QR-kódolvasóhoz a Raspberry Pi Camera használatával, és csak a kameraszalag csatlakozóját kell csatlakoztatnia a Raspberry pi kamerában található kamerahelyzethez
A Pi kamerával különféle érdekes projektek készíthetők, például Raspberry Pi megfigyelő kamera, látogató megfigyelő rendszer, otthoni biztonsági rendszer stb.
Python kód a Raspberry Pi QR Code Readerhez
A Raspberry Pi QR-olvasó teljes kódja az oldal végén található. Mielőtt programoznánk a Raspberry Pi-t, értsük meg a kódot.
Tehát a szokásoknak megfelelően indítsa el a kódot az összes szükséges csomag importálásával.
from imutils.video import VideoStream from pyzbar import pyzbar import argparse import dátum idő import imutils import idő import cv2
Ezután állítsa össze az argumentum elemzőt és elemezze az argumentumokat. A parancssori argumentum információkat tartalmaz a CSV fájl elérési útjáról. A CSV (vesszővel elválasztott értékek) fájl tartalmazza a videófolyam minden vonalkódjának időbélyegét és hasznos terhelését.
ap = argparse.ArgumentParser () ap.add_argument ("- o", "--output", type = str, default = "barcodes.csv", help = "vonalkódokat tartalmazó CSV fájl kimenetének elérési útja") args = vars (ap.parse_args ())
Ezután inicializálja a videofolyamot, és törölje a megjegyzést a kommentárból, ha USB-s webkamerát használ.
#vs = VideoStream (src = 0).start () vs = VideoStream (usePiCamera = True).start () time.sleep (2.0)
Most a hurok belsejében ragadjon meg egy keretet a videofolyamból, és méretezze át 400 pixelre. Miután megragadta a keretet, hívja meg a pyzbar.decode függvényt a QR-kód észleléséhez és dekódolásához.
frame = vs. read () frame = imutils.resize (frame, width = 400) vonalkódok = pyzbar.decode (frame)
Most húzza át az észlelt vonalkódokat, hogy kivonja a vonalkód helyét, és rajzolja a határoló mezőt a kép vonalkódjára.
vonalkód vonalkódokban: (x, y, w, h) = vonalkód.
Ezután dekódolja az észlelt vonalkódot egy "utf-8" karaktersorozatba a dekódolás ("utf-8") függvény segítségével, majd vonja ki a vonalkód típusát a vonalkód.tipe függvény segítségével.
barcodeData = barcode.data.decode ("utf-8") barcodeType = vonalkód.típus
Ezt követően mentse a kivont vonalkódadatokat és vonalkód-típusokat a szöveg nevű változóba, majd rajzolja a képre a vonalkódadatokat és -típust.
text = "{} ({})". format (vonalkódadatok, vonalkódtípus) cv2.putText (keret, szöveg, (x, y - 10), cv2.FONT_HERSHEY_SIMPLEX, 0,5, (0, 0, 255), 2)
Most jelenítse meg a kimenetet a vonalkód adatokkal és a vonalkód típusával.
cv2.imshow ("Vonalkód olvasó", keret)
Az utolsó lépésben ellenőrizze, hogy megnyomta-e az 's' billentyűt, majd bontsa ki a főhurkot, és indítsa el a tisztítási folyamatot.
kulcs = cv2.waitKey (1) & 0xFF # ha megnyomják a `s` gombot, szakítson a hurokról, ha == ord (" s ") kulcs: nyomtatás megszakítása (" takarítás… ") csv.close () cv2.destroyAllWindows () vs.stop ()
A Raspberry Pi QR Code Scanner tesztelése
Miután elkészült a beállítás, indítsa el a QR-kód olvasó programot. Megjelenik egy ablak, amely az Ön kamerájának élő nézetét mutatja. Most már vonalkódokat mutathat be a PI kamera előtt. Amikor a pi vonalkódot dekódol, piros négyzetet rajzol köré vonalkódadatokkal és vonalkód-típussal, az alábbi képen látható módon:
Így egyszerűen felépíthet egy Raspberry Pi Camera QR Code Reader- t a Raspberry Pi kártya és a Pi kamera vagy USB kamera használatával.
Az alábbiakban egy működő videót és teljes kódot adunk ehhez a projekthez.