- Zahteve
- Namestitev OpenCV v Raspberry Pi
- Namestitev drugih zahtevanih paketov
- Nastavitev strojne opreme za bralnik kod QR Raspberry pi
- Python koda za Raspberry Pi QR Reader
- Testiranje optičnega bralnika kode Raspberry Pi
Koda QR (koda hitrega odziva) je vrsta matrične črtne kode, ki vsebuje informacije o elementu, na katerega je pritrjen, na primer podatke o lokaciji, identifikator ali sledilnik, ki identificira spletno mesto ali aplikacijo itd. Je strojno berljiva optična koda oznaka, ki je v obliki 2D slike in ima drugačen vzorec. Če želite izvedeti več o QR kodah in kako ustvariti QR kodo, sledite naši prejšnji vadnici.
V tej vadnici bomo z uporabo knjižnic OpenCV in ZBar zgradili skener QR kode, ki temelji na Raspberry Pi. ZBar je najboljša knjižnica za odkrivanje in dekodiranje različnih vrst črtnih kod in QR kod. OpenCV se uporablja za zajem novega okvirja iz video toka in njegovo obdelavo. Ko OpenCV zajame okvir, ga lahko prenesemo v namensko knjižnico za dekodiranje črtne kode Python, kot je ZBar, ki dekodira črtno kodo in jo pretvori v ustrezne informacije.
Zahteve
- Raspberry Pi 3 (katera koli različica)
- Modul kamere Pi
Preden nadaljujemo s tem skenerjem kod QR Raspberry Pi 3, moramo najprej v ta projekt namestiti OpenCV, knjižnico za dekodiranje črtne kode ZBar, imutils in nekatere druge odvisnosti. OpenCV se tu uporablja za digitalno obdelavo slik. Najpogostejši programi digitalne obdelave slik so zaznavanje predmetov, prepoznavanje obrazov in števec ljudi.
Namestitev OpenCV v Raspberry Pi
Tu bo knjižnica OpenCV uporabljena za skener Raspberry Pi QR. Če želite namestiti OpenCV, najprej posodobite Raspberry Pi.
posodobitev sudo apt-get
Nato namestite potrebne odvisnosti za namestitev OpenCV na vaš 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
Po tem namestite OpenCV v Raspberry Pi z uporabo spodnjega ukaza.
pip3 namestite opencv-contrib-python == 4.1.0.25
Pred tem smo uporabljali OpenCV z Raspberry pi in na njem ustvarili veliko vadnic.
- Namestitev OpenCV na Raspberry Pi s pomočjo CMake
- Spoznavanje obrazov v realnem času z Raspberry Pi in OpenCV
- Prepoznavanje registrske tablice z uporabo Raspberry Pi in OpenCV
- Ocena množice z uporabo OpenCV in Raspberry Pi
Ustvarili smo tudi vrsto vadnic OpenCV, ki se začnejo od začetnika.
Namestitev drugih zahtevanih paketov
Namestitev ZBar
Zbar je najboljša knjižnica za odkrivanje in dekodiranje različnih vrst črtnih kod in QR kod. Za namestitev knjižnice uporabite spodnji ukaz:
pip3 namestite pyzbar
Namestitev imutilov
imutils se uporablja za olajšanje bistvenih funkcij obdelave slik, kot so prevajanje, vrtenje, spreminjanje velikosti, skeletiranje in prikazovanje slik Matplotlib z OpenCV. Za namestitev imutilov uporabite spodnji ukaz:
pip3 namestite imutils
Namestitev argparse
Za namestitev knjižnice argparse uporabite spodnji ukaz. argparse je odgovoren za razčlenjevanje argumentov ukazne vrstice.
pip3 namestite argparse
Nastavitev strojne opreme za bralnik kod QR Raspberry pi
Tu potrebujemo samo kamero Raspberry Pi in Pi za ta skener QR kode s kamero Raspberry Pi, v režo za kamero, ki je navedena v Raspberry pi, pa morate le pritrditi tračni priključek kamere.
Kamero Pi lahko uporabimo za gradnjo različnih zanimivih projektov, kot so nadzorna kamera Raspberry Pi, sistem za spremljanje obiskovalcev, sistem za domačo varnost itd.
Python koda za Raspberry Pi QR Reader
Na koncu strani je navedena celotna koda za bralnik Raspberry Pi QR. Preden programiramo Raspberry Pi, razumimo kodo.
Kot običajno, zaženite kodo z uvozom vseh zahtevanih paketov.
iz imutils.video import VideoStream from pyzbar import pyzbar import argparse import datetime import imutils import time import cv2
Nato zgradite razčlenjevalnik argumentov in razčlenite argumente. Argument ukazne vrstice vsebuje informacije o poti datoteke CSV. Datoteka CSV (vrednosti, ločene z vejico) vsebuje časovni žig in koristni tovor vseh črtnih kod iz našega video toka.
ap = argparse.ArgumentParser () ap.add_argument ("- o", "--output", type = str, default = "barcodes.csv", help = "pot do izhodne datoteke CSV, ki vsebuje črtne kode") args = vars (ap.parse_args ())
Po tem inicializirajte video tok in razkomentirajte komentirano vrstico, če uporabljate spletno kamero USB.
#vs = VideoStream (src = 0).start () vs = VideoStream (usePiCamera = True).start () time.sleep (2.0)
Zdaj znotraj zanke zajemite okvir iz video toka in ga spremenite na 400 slikovnih pik. Ko zagrabi okvir, pokličite funkcijo pyzbar.decode, da zazna in dekodira kodo QR.
frame = vs.read () frame = imutils.resize (frame, width = 400) črtne kode = pyzbar.decode (frame)
Zdaj se zavijte čez zaznane črtne kode, da izvlečete lokacijo črtne kode in narišite omejevalno polje okoli črtne kode na sliki.
za črtno kodo v črtnih kodah: (x, y, w, h) = črtna koda.pravi cv2.rectangle (okvir, (x, y), (x + w, y + h), (0, 0, 255), 2)
Nato s pomočjo funkcije decode ("utf-8") dekodirajte zaznano črtno kodo v niz "utf-8" in nato s funkcijo barcode.type izvlecite vrsto črtne kode.
barcodeData = barcode.data.decode ("utf-8") barcodeType = črtna koda.tip
Nato izvlečene podatke črtne kode in vrsto črtne kode shranite v spremenljivko z imenom besedilo in na sliko narišite podatke in tip črtne kode.
text = "{} ({})". format (barcodeData, barcodeType) cv2.putText (frame, text, (x, y - 10), cv2.FONT_HERSHEY_SIMPLEX, 0.5, (0, 0, 255), 2)
Zdaj prikažite izhod s podatki črtne kode in vrsto črtne kode.
cv2.imshow ("Čitalnik črtnih kod", okvir)
Zdaj v zadnjem koraku preverite, ali je pritisnjena tipka 's', nato prekinite glavno zanko in začnite postopek čiščenja.
key = cv2.waitKey (1) & 0xFF # če je pritisnjena tipka `s`, prekinite zanko, če je key == ord (" s "): break print (" čiščenje… ") csv.close () cv2.destroyAllWindows () vs stop ()
Testiranje optičnega bralnika kode Raspberry Pi
Ko je namestitev pripravljena, zaženite program za branje kode QR. Videli boste okno, ki prikazuje pogled v živo iz vaše kamere, zdaj lahko pred kamero PI predstavite črtne kode. Ko pi dekodira črtno kodo, bo okoli nje narisal rdeče polje s podatki črtne kode in vrsto črtne kode, kot je prikazano na spodnji sliki:
Tako lahko enostavno zgradite bralnik QR kod za Raspberry Pi Camera s samo uporabo plošče Raspberry Pi in Pi kamere ali USB kamere.
Delovni video in celotna koda za ta projekt sta podana spodaj.