- Reikalavimai
- „OpenCV“ diegimas „Raspberry Pi“
- Kitų reikalingų paketų diegimas
- „Raspberry pi“ QR kodų skaitytuvo aparatinės įrangos sąranka
- „Raspberry Pi“ QR kodų skaitytuvo „Python“ kodas
- „Raspberry Pi“ QR kodų skaitytuvo testavimas
QR kodas (greito reagavimo kodas) yra matricos brūkšninio kodo tipas, kuriame pateikiama informacija apie elementą, prie kurio jis pridedamas, pvz., Vietos duomenys, identifikatorius arba sekimo priemonė, identifikuojanti svetainę ar programą ir kt. Tai mašinoje nuskaitomas optinis etiketė, kuri yra 2D atvaizdo forma ir turi skirtingą raštą. Norėdami sužinoti daugiau apie QR kodus ir kaip sugeneruoti QR kodą, vadovaukitės mūsų ankstesne pamoka.
Šioje pamokoje mes ketiname sukurti „ Raspberry Pi“ pagrįstą QR kodų skaitytuvą naudodami „OpenCV“ ir „ZBar“ biblioteką. „ZBar“ yra geriausia biblioteka, skirta aptikti ir iššifruoti įvairių tipų brūkšninius kodus ir QR kodus. „OpenCV“ naudojamas norint paimti naują kadrą iš vaizdo srauto ir jį apdoroti. Kai „OpenCV“ užfiksuos rėmelį, tada mes galime jį perduoti specialiai „Python“ brūkšninių kodų dekodavimo bibliotekai, tokiai kaip „ZBar“, kuri iššifruoja brūkšninį kodą ir paverčia jį atitinkama informacija.
Reikalavimai
- „Raspberry Pi 3“ (bet kokia versija)
- „Pi“ fotoaparato modulis
Prieš pradėdami naudoti šį „ Raspberry Pi 3“ QR kodų skaitytuvą, pirmiausia turime įdiegti „OpenCV“, brūkšninių kodų dekodavimo biblioteką „ZBar“, „imutils“ ir kai kurias kitas šio projekto priklausomybes. „OpenCV“ čia naudojamas skaitmeniniam vaizdų apdorojimui. Dažniausios skaitmeninio vaizdo apdorojimo programos yra objektų aptikimas, veido atpažinimas ir žmonių skaitiklis.
„OpenCV“ diegimas „Raspberry Pi“
Čia „OpenCV“ biblioteka bus naudojama „Raspberry Pi“ QR skaitytuvui. Norėdami įdiegti „OpenCV“, pirmiausia atnaujinkite „Raspberry Pi“.
sudo apt-get atnaujinimas
Tada įdiekite reikalingas „OpenCV“ diegimo „Raspberry Pi“ priklausomybes.
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 to įdiekite „OpenCV“ į „Raspberry Pi“ naudodami žemiau esančią komandą.
„pip3 install“ „opencv-contrib-python“ == 4.1.0.25
Anksčiau mes naudojome „OpenCV“ su „Raspberry pi“ ir sukūrėme jame daugybę vadovėlių.
- „OpenCV“ įdiegimas į „Raspberry Pi“ naudojant „CMake“
- Veido atpažinimas realiuoju laiku naudojant „Raspberry Pi“ ir „OpenCV“
- Valstybinio numerio atpažinimas naudojant „Raspberry Pi“ ir „OpenCV“
- Minios dydžio įvertinimas naudojant „OpenCV“ ir „Raspberry Pi“
Mes taip pat sukūrėme keletą „OpenCV“ mokymo programų, pradedant pradedančiųjų lygiu.
Kitų reikalingų paketų diegimas
„ ZBar“ diegimas
„Zbar“ yra geriausia biblioteka, skirta aptikti ir iššifruoti įvairių tipų brūkšninius kodus ir QR kodus. Norėdami įdiegti biblioteką, naudokite šią komandą:
pip3 įdiekite pyzbar
Imutilų diegimas
„imutils“ naudojamas pagrindinėms vaizdo apdorojimo funkcijoms, tokioms kaip vertimas, pasukimas, dydžio keitimas, skeleto formavimas ir „Matplotlib“ vaizdų pateikimas naudojant „OpenCV“, yra paprasčiau. Norėdami įdiegti „imutils“, naudokite šią komandą:
pip3 įdiekite imutils
Įdiekite argparse
Norėdami įdiegti argparse biblioteką, naudokite žemiau esančią komandą. argparse yra atsakingas už komandinės eilutės argumentų analizavimą.
pip3 įdiekite argparse
„Raspberry pi“ QR kodų skaitytuvo aparatinės įrangos sąranka
Čia šiam QR kodo skaitytuvui naudojant „Raspberry Pi“ kamerą reikia tik „Raspberry Pi“ ir „Pi“ kameros, o kameros lizdą tiesiog reikia pritvirtinti „Raspberry pi“ pateiktame fotoaparato lizde.
„Pi“ kamera gali būti naudojama kuriant įvairius įdomius projektus, tokius kaip „Raspberry Pi“ stebėjimo kamera, lankytojų stebėjimo sistema, namų apsaugos sistema ir kt.
„Raspberry Pi“ QR kodų skaitytuvo „Python“ kodas
Pilnas „ Raspberry Pi“ QR skaitytuvo kodas pateikiamas puslapio pabaigoje. Prieš suprogramuodami „Raspberry Pi“, supraskime kodą.
Taigi, kaip įprasta, pradėkite kodą importuodami visus reikalingus paketus.
iš imutils.video importuoti „VideoStream“ iš pyzbar importuoti pyzbar import argparse importuoti datimportuoti imutils importuoti importuoti cv2
Tada sukonstruokite argumentų analizatorių ir išanalizuokite argumentus. Komandinės eilutės argumente yra informacijos apie CSV failo kelią. CSV (kableliais atskirtų verčių) faile yra kiekvieno brūkšninio kodo laiko žymė ir naudingoji apkrova iš mūsų vaizdo įrašų srauto.
ap = argparse.ArgumentParser () ap.add_argument ("- o", "--output", type = str, default = "barcodes.csv", help = "kelias išvesties CSV failui, kuriame yra brūkšninių kodų") args = vars (ap.parse_args ())
Po to inicijuokite vaizdo srautą ir nekomentuokite komentuojamos eilutės, jei naudojate USB kamerą.
#vs = VideoStream (src = 0). start () vs = VideoStream (usePiCamera = True). start () time.sleep (2.0)
Dabar kilpos viduje paimkite rėmelį iš vaizdo srauto ir pakeiskite jo dydį iki 400 taškų. Kai jis sugriebia rėmą, iškvieskite pyzbar.decode funkciją, kad aptiktumėte ir iššifruotumėte QR kodą.
frame = vsread () frame = imutils.resize (frame, plot = 400) barcodes = pyzbar.decode (frame)
Dabar perjunkite aptiktus brūkšninius kodus, kad ištrauktumėte brūkšninio kodo vietą, ir brėžkite ribojimo langelį aplink brūkšninį kodą paveikslėlyje.
brūkšniniams kodams brūkšniniuose koduose: (x, y, w, h) = brūkšninis kodas. tiesiai į cv2. stačiakampis (rėmelis, (x, y), (x + w, y + h), (0, 0, 255), 2)
Tada dekoduokite aptiktą brūkšninį kodą į „utf-8“ eilutę naudodami funkciją „ dekoduoti“ („utf-8“) ir ištraukite brūkšninio kodo tipą naudodami funkciją barcode.type.
barcodeData = barcode.data.decode ("utf-8") barcodeType = barcode.type
Po to išsaugokite ištrauktus brūkšninio kodo duomenis ir brūkšninio kodo tipą kintamajame, pavadintame tekste, ir brėžkite brūkšninio kodo duomenis ir įveskite paveikslėlyje.
text = "{} ({})". format (barcodeData, barcodeType) cv2.putText (rėmelis, tekstas, (x, y - 10), cv2.FONT_HERSHEY_SIMPLEX, 0,5, (0, 0, 255), 2)
Dabar rodykite išvestį su brūkšninio kodo duomenimis ir brūkšninio kodo tipu.
cv2.imshow („Brūkšninių kodų skaitytuvas“, rėmelis)
Paskutiniame etape patikrinkite, ar paspaustas klavišas „s“, tada nutraukite pagrindinę kilpą ir pradėkite valymo procesą.
key = cv2.waitKey (1) & 0xFF # jei paspaudžiamas klavišas `s, pertraukite nuo kontūro, jei klavišas == ord (" s "): pertraukite spausdinimą (" valymas… ") csv.close () cv2.destroyAllWindows () vsstop ()
„Raspberry Pi“ QR kodų skaitytuvo testavimas
Parengę sąranką, paleiskite QR kodų skaitymo programą. Pamatysite langą, kuriame bus rodomas tiesioginis vaizdas iš jūsų fotoaparato, dabar galite pateikti brūkšninius kodus prieš PI kamerą. Kai pi dekoduoja brūkšninį kodą, jis nupiešia raudoną langelį su brūkšninio kodo duomenimis ir brūkšninio kodo tipu, kaip parodyta žemiau esančiame paveikslėlyje:
Taip galite lengvai sukurti „ Raspberry Pi Camera“ QR kodų skaitytuvą naudodami tiesiog „Raspberry Pi“ plokštę ir „Pi“ kamerą arba USB kamerą.
Darbinis vaizdo įrašas ir visas šio projekto kodas pateikiami žemiau.