- Vaatimukset
- OpenCV: n asentaminen Raspberry Pi: hen
- Muiden vaadittujen pakettien asentaminen
- Raspberry pi QR-koodinlukijan laitteiston asennus
- Python-koodi Raspberry Pi QR Code Readerille
- Testaa Raspberry Pi QR Code Scanner
QR code (Quick Response code) on matriisiviivakoodityyppi, joka sisältää tietoja tuotteesta, johon se on liitetty, kuten sijaintitiedot, tunniste tai verkkosivuston tai sovelluksen tunnistava seuranta jne. Se on koneella luettava optinen tarra, joka on 2D-kuvan muodossa ja jolla on erilainen kuvio. Saat lisätietoja QR-koodeista ja QR-koodin luomisesta seuraamalla edellistä opetusohjelmaa.
Tässä opetusohjelmassa aiomme rakentaa Raspberry Pi -pohjaisen QR-koodiskannerin käyttämällä OpenCV- ja ZBar-kirjastoa. ZBar on paras kirjasto erityyppisten viivakoodien ja QR-koodien havaitsemiseen ja dekoodaamiseen. OpenCV: tä käytetään tarttumaan uuteen kehykseen videovirrasta ja prosessoimaan se. Kun OpenCV sieppaa kehyksen, voimme siirtää sen omistettuun Python-viivakoodin dekoodauskirjastoon, kuten ZBariin, joka purkaa viivakoodin ja muuntaa sen vastaavaksi tiedoksi.
Vaatimukset
- Raspberry Pi 3 (kaikki versiot)
- Pi-kameramoduuli
Ennen tämän Raspberry Pi 3 QR- koodiskannerin jatkamista meidän on ensin asennettava OpenCV, viivakoodinpurkukirjasto ZBar, imutils ja jotkut muut riippuvuudet tähän projektiin. OpenCV: tä käytetään tässä digitaaliseen kuvankäsittelyyn. Digitaalisen kuvankäsittelyn yleisimmät sovellukset ovat kohteiden tunnistus, kasvojentunnistus ja ihmiset laskevat.
OpenCV: n asentaminen Raspberry Pi: hen
Täällä OpenCV-kirjastoa käytetään Raspberry Pi QR-skanneriin. Asenna OpenCV päivittämällä ensin Raspberry Pi.
sudo apt-get -päivitys
Asenna sitten tarvittavat riippuvuudet OpenCV: n asentamiseksi Raspberry Pi -laitteeseesi.
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
Tämän jälkeen asenna OpenCV Raspberry Pi -ohjelmaan alla olevan komennon avulla.
pip3 install opencv-contrib-python == 4.1.0.25
Aiemmin käytimme OpenCV: tä Raspberry pi: n kanssa ja loimme siihen paljon opetusohjelmia.
- OpenCV: n asentaminen Raspberry Pi: lle CMaken avulla
- Reaaliaikainen kasvojentunnistus Raspberry Pi: n ja OpenCV: n avulla
- Rekisterikilven tunnistus Raspberry Pi: n ja OpenCV: n avulla
- Joukon koon arviointi käyttämällä OpenCV: tä ja Vadelma Pi: tä
Olemme myös luoneet sarjan OpenCV-oppaita alkaen aloittelijan tasosta.
Muiden vaadittujen pakettien asentaminen
ZBarin asentaminen
Zbar on paras kirjasto erityyppisten viivakoodien ja QR-koodien havaitsemiseen ja dekoodaamiseen. Asenna kirjasto alla olevan komennon avulla:
pip3 asenna pyzbar
Imutiilien asentaminen
imutilsia käytetään tekemään olennaisia kuvankäsittelytoimintoja, kuten kääntäminen, kääntäminen, koon muuttaminen, luuranko ja Matplotlib-kuvien näyttäminen helpommin OpenCV: n avulla. Asenna imutiilit alla olevan komennon avulla:
pip3 asenna imutils
Argparsin asentaminen
Asenna argparse-kirjasto alla olevan komennon avulla. argparse vastaa komentoriviargumenttien jäsentämisestä.
pip3 asenna argparse
Raspberry pi QR-koodinlukijan laitteiston asennus
Tässä vaaditaan vain Raspberry Pi- ja Pi-kamera tälle QR-skannerille, jossa käytetään Raspberry Pi -kameraa, ja sinun on vain kiinnitettävä kameranauhaliitin Raspberry pi -laitteen kameran aukkoon.
Pi-kameraa voidaan käyttää rakentamaan erilaisia mielenkiintoisia projekteja, kuten Raspberry Pi -valvontakamera, vierailijavalvontajärjestelmä, kodin turvajärjestelmä jne.
Python-koodi Raspberry Pi QR Code Readerille
Raspberry Pi QR-lukijan täydellinen koodi on annettu sivun lopussa. Ennen kuin ohjelmoimme Vadelma Pi, ymmärretään koodi.
Joten, kuten tavallista, aloita koodi tuomalla kaikki vaaditut paketit.
from imutils.video import VideoStream from pyzbar import pyzbar import argparse import datetime import imutils import time import cv2
Luo sitten argumentin jäsennin ja jäsennä argumentit. Komentoriviargumentti sisältää tietoja CSV-tiedoston polusta. CSV (Comma Separated Values) -tiedosto sisältää jokaisen videovirran viivakoodin aikaleiman ja hyötykuorman.
ap = argparse.ArgumentParser () ap.add_argument ("- o", "--output", type = str, default = "barcodes.csv", help = "polku viivakoodeja sisältävän CSV-tiedoston tulostamiseen") args = vars (ap.parse_args ())
Tämän jälkeen alusta videovirta ja poista kommentoidun rivin kommentti, jos käytät USB-verkkokameraa.
#vs = VideoStream (src = 0).start () vs = VideoStream (usePiCamera = True).start () time.sleep (2.0)
Nyt sisällä silmukan, tartu kehyksen videovirran ja muuttaa sen kokoa 400 pikseliä. Kun se tarttuu kehykseen, kutsu pyzbar.decode- toiminto havaita ja purkaa QR-koodi.
kehys = vs. luku () kehys = imutils.resize (kehys, leveys = 400) viivakoodit = pyzbar.decode (kehys)
Silmukkaa nyt havaittujen viivakoodien yli poimiaksesi viivakoodin sijainnin ja piirrä rajoittava ruutu kuvan viivakoodin ympärille.
viivakoodille viivakoodeissa: (x, y, w, h) = viivakoodi. suora cv2.suorakulmio (kehys, (x, y), (x + w, y + h), (0, 0, 255), 2)
Dekoodaa sitten havaittu viivakoodi "utf-8" -merkkijonoksi dekoodaustoiminnolla ("utf-8") ja pura sitten viivakoodityyppi viivakoodi.type-funktiolla.
barcodeData = viivakoodi.data.decode ("utf-8") viivakoodiTyyppi = viivakoodi.tyyppi
Tämän jälkeen tallenna puretut viivakooditiedot ja viivakoodityyppi muuttujaan nimeltä teksti ja piirrä viivakooditiedot ja kirjoita kuvaan.
text = "{} ({})". format (viivakoodidata, viivakoodityyppi) cv2.putText (kehys, teksti, (x, y - 10), cv2.FONT_HERSHEY_SIMPLEX, 0,5, (0, 0, 255), 2)
Näytä nyt tulosteen viivakooditiedot ja viivakoodityyppi.
cv2.imshow ("Viivakoodilukija", kehys)
Tarkista nyt viimeisessä vaiheessa, painetaanko näppäintä 's, katkaise sitten pääsilmukka ja aloita puhdistus.
avain = cv2.waitKey (1) & 0xFF # jos `s`-näppäintä painetaan, katkaise silmukka, jos avain == ord (" s "): keskeytä tulostus (" siivoaminen… ") csv.close () cv2.destroyAllWindows () vs.stop ()
Testaa Raspberry Pi QR Code Scanner
Kun asennus on valmis, käynnistä QR-koodinlukijaohjelma. Näet ikkunan, joka näyttää kameran reaaliaikanäkymän, nyt voit esittää viivakoodit PI-kameran edessä. Kun pi purkaa viivakoodin, se piirtää sen ympärille punaisen ruudun, jossa on viivakooditiedot ja viivakoodityyppi, kuten alla olevassa kuvassa näkyy:
Näin voit helposti rakentaa Raspberry Pi -kameran QR-koodinlukijan vain käyttämällä Raspberry Pi -korttia ja Pi-kameraa tai USB-kameraa.
Toimiva video ja täydellinen koodi tälle projektille on annettu alla.