- Krav
- Installation af OpenCV i Raspberry Pi
- Installation af andre påkrævede pakker
- Raspberry pi QR Code Reader Hardwareopsætning
- Python-kode til Raspberry Pi QR Code Reader
- Test af Raspberry Pi QR-kodescanner
QR-kode (Quick Response code) er en type matrix-stregkode, der indeholder oplysninger om det element, som det er knyttet til, som placeringsdata, identifikator eller en tracker, der identificerer et websted eller en app osv. Det er en maskinlæsbar optisk etiket, der er i form af et 2D-billede og har et andet mønster. For at lære mere om QR-koder, og hvordan man genererer en QR-kode, skal du følge vores tidligere vejledning.
I denne vejledning skal vi opbygge en Raspberry Pi-baseret QR- kodescanner ved hjælp af OpenCV og ZBar-biblioteket. ZBar er det bedste bibliotek til detektering og afkodning af de forskellige typer stregkoder og QR-koder. OpenCV bruges til at få fat i en ny ramme fra en videostream og behandle den. Når OpenCV har fanget en ramme, kan vi sende den til et dedikeret Python-stregkodeafkodningsbibliotek, såsom en ZBar, der afkoder stregkoden og konverterer den til respektive information.
Krav
- Raspberry Pi 3 (enhver version)
- Pi kameramodul
Før vi fortsætter med denne Raspberry Pi 3 QR- kodescanner, skal vi først installere OpenCV, stregkodeafkodningsbibliotek ZBar, imutils og nogle andre afhængigheder i dette projekt. OpenCV bruges her til digital billedbehandling. De mest almindelige anvendelser af digital billedbehandling er genstandsdetektering, ansigtsgenkendelse og persontæller.
Installation af OpenCV i Raspberry Pi
Her vil OpenCV-biblioteket blive brugt til Raspberry Pi QR-scanneren. For at installere OpenCV skal du først opdatere Raspberry Pi.
sudo apt-get opdatering
Installer derefter de krævede afhængigheder for installation af OpenCV på din 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
Derefter skal du installere OpenCV i Raspberry Pi ved hjælp af nedenstående kommando.
pip3 installer opencv-contrib-python == 4.1.0.25
Vi har tidligere brugt OpenCV med Raspberry pi og oprettet en masse tutorials om det.
- Installation af OpenCV på Raspberry Pi ved hjælp af CMake
- Realtids ansigtsgenkendelse med Raspberry Pi og OpenCV
- Registrering af nummerplade ved hjælp af Raspberry Pi og OpenCV
- Estimering af mængde ved hjælp af OpenCV og Raspberry Pi
Vi har også oprettet en række OpenCV-tutorials startende fra begynderniveauet.
Installation af andre påkrævede pakker
Installation af ZBar
Zbar er det bedste bibliotek til registrering og afkodning af de forskellige typer stregkoder og QR-koder. Brug nedenstående kommando til at installere biblioteket:
pip3 installer pyzbar
Installation af imutils
imutils bruges til at gøre vigtige billedbehandlingsfunktioner som oversættelse, rotation, størrelse, skelet og visning af Matplotlib-billeder lettere med OpenCV. Brug nedenstående kommando til at installere imutils:
pip3 installere imutils
Installation af argparse
Brug nedenstående kommando til at installere argparse-biblioteket. argparse er ansvarlig for at analysere kommandolinjeargumenter.
pip3 installer argparse
Raspberry pi QR Code Reader Hardwareopsætning
Her kræver vi kun Raspberry Pi og Pi-kamera til denne QR-kodescanner ved hjælp af Raspberry Pi Camera, og du skal bare vedhæfte kamerabåndstikket i kameraslotten i Raspberry pi
Pi-kamera kan bruges til at opbygge forskellige interessante projekter som Raspberry Pi Surveillance Camera, Visitor Monitoring System, Home Security System osv.
Python-kode til Raspberry Pi QR Code Reader
Den komplette kode til Raspberry Pi QR-læser findes i slutningen af siden. Før vi programmerer Raspberry Pi, lad os forstå koden.
Så start som normalt koden ved at importere alle de nødvendige pakker.
fra imutils.video import VideoStream fra pyzbar import pyzbar import argparse import datetime import imutils import tid import cv2
Konstruer derefter argumentparseren, og analyser argumenterne. Kommandolinjeargumentet indeholder oplysninger om stien til CSV-filen. CSV (Comma Separated Values) filen indeholder tidsstempel og nyttelast for hver stregkode fra vores videostream.
ap = argparse.ArgumentParser () ap.add_argument ("- o", "--output", type = str, default = "barcodes.csv", help = "sti til output CSV-fil indeholdende stregkoder") args = vars (ap.parse_args ())
Derefter initialiseres videostrømmen og fjern kommentar fra den kommenterede linje, hvis du bruger USB-webkamera.
#vs = VideoStream (src = 0).start () vs = VideoStream (usePiCamera = True).start () time.sleep (2.0)
Nu inde i sløjfen, tag en ramme fra videostrømmen og ændre størrelsen på den til 400 pixels. Når den griber rammen, skal du ringe til pyzbar.decode- funktionen for at opdage og afkode QR-koden.
frame = vs.read () frame = imutils.resize (frame, width = 400) stregkoder = pyzbar.decode (frame)
Loop nu over de registrerede stregkoder for at udtrække placeringen af stregkoden og træk afgrænsningsboksen omkring stregkoden på billedet.
for stregkode i stregkoder: (x, y, w, h) = stregkode. ret cv2. rektangel (ramme, (x, y), (x + w, y + h), (0, 0, 255), 2)
Derefter afkode den detekterede stregkode i en "utf-8" -streng ved hjælp af afkodningsfunktionen ("utf-8") , og udpak derefter stregkodetypen ved hjælp af stregkode.type-funktionen.
stregkodeData = stregkode.data.decode ("utf-8") stregkodeType = stregkode.type
Gem derefter de udpakkede stregkodedata og stregkodetypen i en variabel med navnet tekst, og tegn stregkodedataene og skriv på billedet.
text = "{} ({})". format (stregkodedata, stregkodetype) cv2.putText (ramme, tekst, (x, y - 10), cv2.FONT_HERSHEY_SIMPLEX, 0,5, (0, 0, 255), 2)
Vis nu output med stregkodedata og stregkodetype.
cv2.imshow ("Stregkodelæser", ramme)
I sidste trin skal du kontrollere, om der trykkes på tasten 's, og derefter bryde hovedsløjfen ud og starte oprydningsprocessen.
key = cv2.waitKey (1) & 0xFF # hvis der trykkes på `s`-tasten, skal du bryde fra sløjfen, hvis key == ord (" s "): break print (" oprydning… ") csv.close () cv2.destroyAllWindows () vs. stop ()
Test af Raspberry Pi QR-kodescanner
Når din opsætning er klar, skal du starte QR-kodelæserprogrammet. Du vil se et vindue, der viser en live visning fra dit kamera, nu kan du præsentere stregkoder foran PI-kameraet. Når pi afkoder en stregkode, tegner den en rød boks omkring den med stregkodedata og stregkodetype som vist i billedet nedenfor:
Dette er, hvordan du nemt kan opbygge en Raspberry Pi Camera QR Code Reader ved blot at bruge Raspberry Pi-kortet og Pi-kameraet eller USB-kameraet.
En arbejdsvideo og en komplet kode til dette projekt er angivet nedenfor.