- Krav
- Installere OpenCV i Raspberry Pi
- Installere andre nødvendige pakker
- Raspberry pi QR Code Reader Maskinvareoppsett
- Python-kode for Raspberry Pi QR Code Reader
- Testing av Raspberry Pi QR-kodeskanner
QR-kode (Quick Response code) er en type matrisestrekkode som inneholder informasjon om varen den er festet til, som stedsdata, identifikator eller en tracker som identifiserer et nettsted eller en app, etc. Det er en maskinlesbar optisk etikett som er i form av et 2D-bilde og har et annet mønster. For å lære mer om QR-koder og hvordan du genererer en QR-kode, følg vår forrige veiledning.
I denne opplæringen skal vi bygge en Raspberry Pi-basert QR- kodeskanner ved hjelp av OpenCV og ZBar-biblioteket. ZBar er det beste biblioteket for å oppdage og avkode forskjellige typer strekkoder og QR-koder. OpenCV brukes til å hente en ny ramme fra en videostrøm, og behandle den. Når OpenCV fanger en ramme, kan vi sende den til et dedikert Python-strekkodedekoderingsbibliotek, for eksempel en ZBar som dekoder strekkoden og konverterer den til respektive informasjon.
Krav
- Raspberry Pi 3 (hvilken som helst versjon)
- Pi kameramodul
Før vi fortsetter med denne Raspberry Pi 3 QR-kodeskanneren, må vi først installere OpenCV, strekkodedekodingsbiblioteket ZBar, imutils og noen andre avhengigheter i dette prosjektet. OpenCV brukes her til digital bildebehandling. De vanligste bruksområdene for digital bildebehandling er gjenkjenning av objekter, ansiktsgjenkjenning og personteller.
Installere OpenCV i Raspberry Pi
Her vil OpenCV-biblioteket brukes til Raspberry Pi QR-skanneren. For å installere OpenCV, oppdaterer du først Raspberry Pi.
sudo apt-get oppdatering
Installer deretter de nødvendige avhengighetene for å installere OpenCV på 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
Deretter installerer du OpenCV i Raspberry Pi ved hjelp av kommandoen nedenfor.
pip3 installer opencv-contrib-python == 4.1.0.25
Vi har tidligere brukt OpenCV med Raspberry pi og laget mange veiledninger om det.
- Installere OpenCV på Raspberry Pi ved hjelp av CMake
- Sanntids ansiktsgjenkjenning med Raspberry Pi og OpenCV
- Lisensgjenkjenning ved bruk av Raspberry Pi og OpenCV
- Estimering av mengde ved bruk av OpenCV og Raspberry Pi
Vi har også laget en serie OpenCV-opplæringsprogrammer fra begynnernivå.
Installere andre nødvendige pakker
Installere ZBar
Zbar er det beste biblioteket for å oppdage og avkode forskjellige typer strekkoder og QR-koder. Bruk kommandoen nedenfor for å installere biblioteket:
pip3 installer pyzbar
Installere imutils
imutils brukes til å gjøre viktige bildebehandlingsfunksjoner som oversettelse, rotering, endring av størrelse, skjelettdannelse og visning av Matplotlib-bilder enklere med OpenCV. Bruk kommandoen nedenfor for å installere imutils:
pip3 installere imutils
Installerer argparse
Bruk kommandoen nedenfor for å installere argparse-biblioteket. argparse er ansvarlig for å analysere kommandolinjeargumenter.
pip3 installer argparse
Raspberry pi QR Code Reader Maskinvareoppsett
Her krever vi bare Raspberry Pi og Pi-kamera for denne QR-kodeskanneren ved hjelp av Raspberry Pi Camera, og du trenger bare å feste båndkontakten til kameraet i kamerasporet gitt i Raspberry pi
Pi-kamera kan brukes til å bygge forskjellige interessante prosjekter som Raspberry Pi Surveillance Camera, Visitor Monitoring System, Home Security System, etc.
Python-kode for Raspberry Pi QR Code Reader
Den komplette koden for Raspberry Pi QR-leser er gitt på slutten av siden. Før vi programmerer Raspberry Pi, la oss forstå koden.
Så som vanlig, start koden ved å importere alle nødvendige pakker.
fra imutils.video import VideoStream fra pyzbar import pyzbar import argparse import datetime import imutils import tid import cv2
Konstruer deretter argumentparseren og analyser argumentene. Kommandolinjeargumentet inneholder informasjon om banen til CSV-filen. CSV (Comma Separated Values) -filen inneholder tidsstempel og nyttelast for hver strekkode fra videostrømmen vår.
ap = argparse.ArgumentParser () ap.add_argument ("- o", "--output", type = str, default = "barcodes.csv", help = "path to output CSV file containing barcodes") args = vars (ap.parse_args ())
Etter det, initialiser videostrømmen og fjern kommentaren til den kommenterte linjen hvis du bruker USB-webkamera.
#vs = VideoStream (src = 0).start () vs = VideoStream (usePiCamera = True).start () time.sleep (2.0)
Nå inne i løkken, ta en ramme fra videostrømmen og endre størrelsen på den til 400 piksler. Når den griper rammen, kan du ringe pyzbar.decode- funksjonen for å oppdage og dekode QR-koden.
frame = vs.read () frame = imutils.resize (frame, width = 400) barcodes = pyzbar.decode (frame)
Nå løkker du over de oppdagede strekkodene for å trekke ut plasseringen av strekkoden og tegne avgrensningsboksen rundt strekkoden på bildet.
for strekkode i strekkoder: (x, y, w, h) = strekkode. rett cv2. rektangel (ramme, (x, y), (x + w, y + h), (0, 0, 255), 2)
Deretter dekoder du den oppdagede strekkoden i en "utf-8" -streng ved hjelp av dekoden ("utf-8") -funksjonen, og trekker deretter ut strekkodetypen ved hjelp av strekkode.type-funksjonen.
strekkodeData = strekkode.data.decode ("utf-8") strekkodeType = strekkode.type
Deretter lagrer du de ekstraherte strekkodedataene og strekkodetypene i en variabel med navnet tekst, og tegner strekkodedataene og skriver inn på bildet.
text = "{} ({})". format (strekkodeData, strekkodeType) cv2.putText (ramme, tekst, (x, y - 10), cv2.FONT_HERSHEY_SIMPLEX, 0,5, (0, 0, 255), 2)
Vis nå utdata med strekkodedata og strekkodetype.
cv2.imshow ("Strekkodeleser", ramme)
Nå i siste trinn, sjekk om tasten 's' er trykket, og bryt deretter ut hovedsløyfen og start oppryddingsprosessen.
key = cv2.waitKey (1) & 0xFF # hvis `s`-tasten trykkes, bryt fra sløyfen hvis tast == ord (" s "): break print (" rydde opp… ") csv.close () cv2.destroyAllWindows () mot stopp ()
Testing av Raspberry Pi QR-kodeskanner
Når oppsettet er klart, starter du QR-kodeleserprogrammet. Du vil se et vindu som viser en live visning fra kameraet ditt, nå kan du presentere strekkoder foran PI-kameraet. Når pi dekoder en strekkode, vil den tegne en rød boks rundt den med strekkodedata og strekkodetype som vist på bildet nedenfor:
Slik kan du enkelt bygge en Raspberry Pi Camera QR Code Reader med bare å bruke Raspberry Pi-kortet og Pi-kameraet eller USB-kameraet.
En arbeidsvideo og fullstendig kode for dette prosjektet er gitt nedenfor.