- Bedarf
- OpenCV in Raspberry Pi installieren
- Andere erforderliche Pakete installieren
- Raspberry pi QR Code Reader Hardware-Setup
- Python-Code für Raspberry Pi QR Code Reader
- Testen des Raspberry Pi QR Code Scanners
QR-Code (Quick Response Code) ist eine Art Matrix-Barcode, der Informationen zu dem Element enthält, an das er angehängt ist, z. B. Standortdaten, Kennung oder einen Tracker, der eine Website oder App identifiziert. Es handelt sich um eine maschinenlesbare Optik Beschriftung in Form eines 2D-Bildes mit einem anderen Muster. Weitere Informationen zu QR-Codes und zum Generieren eines QR-Codes finden Sie in unserem vorherigen Tutorial.
In diesem Tutorial erstellen wir einen Raspberry Pi-basierten QR-Code-Scanner mit OpenCV- und ZBar-Bibliothek. ZBar ist die beste Bibliothek zum Erkennen und Dekodieren der verschiedenen Arten von Barcodes und QR-Codes. OpenCV wird verwendet, um ein neues Bild aus einem Videostream abzurufen und zu verarbeiten. Sobald OpenCV einen Frame erfasst, können wir ihn an eine dedizierte Python-Barcode-Decodierungsbibliothek wie eine ZBar übergeben, die den Barcode decodiert und in entsprechende Informationen konvertiert.
Bedarf
- Raspberry Pi 3 (jede Version)
- Pi-Kameramodul
Bevor Sie mit diesem Raspberry Pi 3 QR-Code-Scanner fortfahren, müssen Sie zunächst OpenCV, die Barcode-Decodierungsbibliothek ZBar, Imutils und einige andere Abhängigkeiten in diesem Projekt installieren. OpenCV wird hier für die digitale Bildverarbeitung verwendet. Die häufigsten Anwendungen der digitalen Bildverarbeitung sind Objekterkennung, Gesichtserkennung und Personenzähler.
OpenCV in Raspberry Pi installieren
Hier wird die OpenCV-Bibliothek für den Raspberry Pi QR-Scanner verwendet. Um OpenCV zu installieren, aktualisieren Sie zuerst den Raspberry Pi.
sudo apt-get update
Installieren Sie dann die erforderlichen Abhängigkeiten für die Installation von OpenCV auf Ihrem Raspberry Pi.
sudo apt-get installiere libhdf5-dev -y sudo apt-get installiere libhdf5-serial-dev –y sudo apt-get installiere libatlas-base-dev –y sudo apt-get installiere libjasper-dev -y sudo apt-get installiere libqtgui4 –Y sudo apt-get install libqt4-test –y
Installieren Sie danach OpenCV in Raspberry Pi mit dem folgenden Befehl.
pip3 installiere opencv-contrib-python == 4.1.0.25
Wir haben zuvor OpenCV mit Raspberry pi verwendet und viele Tutorials darauf erstellt.
- Installieren von OpenCV auf Raspberry Pi mit CMake
- Echtzeit-Gesichtserkennung mit Raspberry Pi und OpenCV
- Kennzeichenerkennung mit Raspberry Pi und OpenCV
- Crowd Size Estimation mit OpenCV und Raspberry Pi
Wir haben auch eine Reihe von OpenCV-Tutorials für Anfänger erstellt.
Andere erforderliche Pakete installieren
Installieren ZBar
Zbar ist die beste Bibliothek zum Erkennen und Dekodieren der verschiedenen Arten von Barcodes und QR-Codes. Verwenden Sie den folgenden Befehl, um die Bibliothek zu installieren:
pip3 installiere pyzbar
Installieren imutils
Mit imutils werden wichtige Bildverarbeitungsfunktionen wie Translation, Rotation, Größenänderung, Skelettierung und Anzeige von Matplotlib-Bildern mit OpenCV vereinfacht. Verwenden Sie den folgenden Befehl, um die imutils zu installieren:
pip3 installiere Imutils
Installieren argparse
Verwenden Sie den folgenden Befehl, um die Argparse-Bibliothek zu installieren. argparse ist für das Parsen von Befehlszeilenargumenten verantwortlich.
pip3 install argparse
Raspberry pi QR Code Reader Hardware-Setup
Hier benötigen wir nur Raspberry Pi und Pi Kamera für diesen QR-Code-Scanner mit Raspberry Pi Kamera und Sie müssen nur den Kamerabandstecker in den Kamera-Steckplatz im Raspberry Pi stecken
Mit der Pi-Kamera können verschiedene interessante Projekte wie die Raspberry Pi-Überwachungskamera, das Besucherüberwachungssystem, das Haussicherungssystem usw. erstellt werden.
Python-Code für Raspberry Pi QR Code Reader
Der vollständige Code für den Raspberry Pi QR Reader ist am Ende der Seite angegeben. Bevor wir den Raspberry Pi programmieren, wollen wir den Code verstehen.
Starten Sie den Code also wie gewohnt, indem Sie alle erforderlichen Pakete importieren.
aus imutils.video importieren VideoStream aus pyzbar importieren pyzbar importieren argparse importieren datetime importieren imutils importieren zeit importieren cv2
Erstellen Sie dann den Argumentparser und analysieren Sie die Argumente. Das Befehlszeilenargument enthält Informationen zum Pfad der CSV-Datei. Die CSV-Datei (Comma Separated Values) enthält den Zeitstempel und die Nutzdaten aller Barcodes aus unserem Videostream.
ap = argparse.ArgumentParser () ap.add_argument ("- o", "--output", type = str, default = "barcodes.csv", help = "Pfad zur Ausgabe einer CSV-Datei mit Barcodes") args = vars (ap.parse_args ())
Initialisieren Sie danach den Videostream und kommentieren Sie die kommentierte Zeile aus, wenn Sie eine USB-Webcam verwenden.
#vs = VideoStream (src = 0).start () vs = VideoStream (usePiCamera = True).start () time.sleep (2.0)
Nehmen Sie nun innerhalb der Schleife einen Frame aus dem Videostream und ändern Sie die Größe auf 400 Pixel. Rufen Sie die Funktion pyzbar.decode auf, um den QR-Code zu erkennen und zu dekodieren, sobald er den Frame erfasst hat .
frame = vs.read () frame = imutils.resize (frame, width = 400) barcodes = pyzbar.decode (frame)
Führen Sie nun eine Schleife über die erkannten Barcodes durch, um die Position des Barcodes zu extrahieren, und zeichnen Sie den Begrenzungsrahmen um den Barcode auf dem Bild.
für Barcode in Barcodes: (x, y, w, h) = Barcode.rect cv2.rectangle (Rahmen, (x, y), (x + w, y + h), (0, 0, 255), 2)
Dekodieren Sie dann den erkannten Barcode mithilfe der Dekodierungsfunktion ("utf-8") in eine Zeichenfolge "utf-8" und extrahieren Sie den Barcodetyp mithilfe der Funktion "barcode.type".
barcodeData = barcode.data.decode ("utf-8") barcodeType = barcode.type
Speichern Sie anschließend die extrahierten Barcode-Daten und den Barcode-Typ in einer Variablen mit dem Namen Text und zeichnen Sie die Barcode-Daten und den Typ auf das Bild.
text = "{} ({})". format (barcodeData, barcodeType) cv2.putText (Rahmen, Text, (x, y - 10), cv2.FONT_HERSHEY_SIMPLEX, 0,5, (0, 0, 255), 2)
Zeigen Sie nun die Ausgabe mit den Barcode-Daten und dem Barcode-Typ an.
cv2.imshow ("Barcode Reader", Frame)
Überprüfen Sie nun im letzten Schritt, ob die Taste 's' gedrückt wurde, brechen Sie dann die Hauptschleife aus und starten Sie den Bereinigungsprozess.
key = cv2.waitKey (1) & 0xFF # Wenn die Taste `s` gedrückt wird, brechen Sie die Schleife ab, wenn key == ord (" s "): print drucken (" bereinigen… ") csv.close () cv2.destroyAllWindows () vs.stop ()
Testen des Raspberry Pi QR Code Scanners
Sobald Ihr Setup fertig ist, starten Sie das QR-Code-Reader-Programm. Sie sehen ein Fenster mit einer Live-Ansicht Ihrer Kamera. Jetzt können Sie Barcodes vor der PI-Kamera anzeigen. Wenn pi einen Barcode dekodiert, wird ein rotes Kästchen mit Barcode-Daten und Barcode-Typ um ihn herum gezeichnet, wie in der folgenden Abbildung gezeigt:
Auf diese Weise können Sie ganz einfach einen QR-Code-Leser für die Raspberry Pi-Kamera erstellen, indem Sie nur die Raspberry Pi-Karte und die Pi-Kamera oder die USB-Kamera verwenden.
Ein Arbeitsvideo und ein vollständiger Code für dieses Projekt sind unten angegeben.