Erstellen einen QR-Code-Scanner mit OpenCV in Python

Manav Narula 18 August 2022
  1. Verwenden Sie die Klasse QRCodeDetector, um einen QR-Code-Scanner mit OpenCV in Python zu erstellen
  2. Fazit
Erstellen einen QR-Code-Scanner mit OpenCV in Python

Wir alle kennen Barcodes, die in verschiedenen Produkten vorhanden sind. Basierend auf dem Morsecode speichern Barcodes Informationen, indem sie sie mit Linien und Zwischenräumen darstellen und die Daten horizontal speichern.

In letzter Zeit haben auch QR-Codes an Popularität gewonnen. QR-Codes sind in einer Box gespeichert und werden durch eine Kombination aus schwarzen und weißen Quadraten mit einigen Punkten dargestellt.

Es basiert auch auf dem Morsecode und kann daher als eine Art Matrix von Barcodes betrachtet werden.

QR-Codes haben in Bezug auf die Speicherung gegenüber herkömmlichen Barcodes die Nase vorn. Es speichert Daten in zwei Richtungen; Daher kann es mehr Informationen als Strichcodes enthalten.

Diese Informationen können URLs, Kontakte und andere Informationen mit bis zu viertausend Zeichen sein. Eine Anwendung für den QR-Code-Scanner gibt es heutzutage in fast jedem Handy.

Dieses Tutorial zeigt, wie Sie einen QR-Code-Scanner mit der OpenCV-Bibliothek in Python erstellen.

Die OpenCV-Bibliothek enthält verschiedene Funktionalitäten und Klassen, die Bilder effizient speichern und verarbeiten können. Wir können eine breite Palette vordefinierter Techniken in unseren Rahmen anwenden.

Verwenden Sie die Klasse QRCodeDetector, um einen QR-Code-Scanner mit OpenCV in Python zu erstellen

Version 4.0.0 der OpenCV-Bibliothek hat die Klasse QRCodeDetector eingeführt. Diese Klasse enthält Methoden, die zum Erkennen und Scannen von Bildern auf QR-Codes verwendet werden können.

Wir können einzelne und mehrere QR-Codes mit verschiedenen Methoden scannen.

Die Methode detect() aus dieser Klasse wird verwendet, um das Bild nach QR-Codes zu scannen; Es findet die Box, die den QR-Code enthält. Die Methode decode() dekodiert den erkannten QR-Code.

Um mehrere QR-Codes in einem bestimmten Bild zu erkennen, können wir die Funktionen detectMulti() und decodeMulti() verwenden. Zum Erkennen und Dekodieren von Codes auf einer gekrümmten Oberfläche verwenden wir die Methoden detectCurved() bzw. decodeCurved().

Wir können die Funktion detectandDecode() verwenden, um gleichzeitig Codes aus einem Bild zu erkennen und zu dekodieren. Für diese Methode existieren auch die Methoden detectandDecodeCurved() und detectandDecodeMulti().

Lassen Sie uns nun mit dieser Klasse einen sehr einfachen QR-Code erstellen und den QR-Code im folgenden Bild scannen:

QR-Code zum Scannen

Siehe Code unten.

import cv2

img = cv2.imread("2.jpg")
det = cv2.QRCodeDetector()
info, box_coordinates, _ = det.detectAndDecode(img)

if box_coordinates is None:
    print("No Code")
else:
    print(info)

if box_coordinates is not None:
    box_coordinates = [box_coordinates[0].astype(int)]
    n = len(box_coordinates[0])
    for i in range(n):
        cv2.line(
            img,
            tuple(box_coordinates[0][i]),
            tuple(box_coordinates[0][(i + 1) % n]),
            (0, 255, 0),
            3,
        )

cv2.imshow("Output", img)
cv2.waitKey(0)
cv2.destroyAllWindows()

Ausgabe:

http://sampleurl.com

QR-Code mit OpenCV gescannt

Im obigen Beispiel haben wir ein Objekt der Klasse QRCodeDetector erstellt und die Funktion detectandDecode() verwendet, um den QR-Code im angegebenen Bild zu scannen und zu dekodieren. Diese Funktion gab die Informationen des angezeigten QR-Codes zurück.

Es gab auch die Koordinaten der Box zurück, die den QR-Code umgibt. Wir haben diese Koordinaten verwendet, um seine Grenzen auf dem Bild mit der Funktion line() zu zeichnen.

Das letzte Bild wird angezeigt, und wir haben die Funktionen waitKey() und destroyAllWindows() verwendet, um zu verhindern, dass dieses Fenster automatisch geschlossen wird, und warten darauf, dass der Benutzer eine Taste drückt, bevor wir es schließen.

In unserem Beispiel lesen wir ein Bild aus dem Verzeichnis und scannen den QR-Code. Wir können dies interaktiver gestalten, indem wir die Webcam verwenden und Bilder von dort lesen.

OpenCV bietet die Klasse VideoCapture zum Erfassen und Lesen von Bildern von der Webcam.

Fazit

In diesem Tutorial wurde die Verwendung der OpenCV-Bibliothek von Python zum Erstellen eines einfachen QR-Code-Scanners demonstriert. Wir begannen mit der Erörterung der Grundlagen eines QR-Codes, seines Vergleichs mit einem Barcode und der Informationen, die er speichern kann.

Wir haben kurz die Klasse QRCodeDetector aus der OpenCV-Bibliothek besprochen, die zahlreiche Methoden zum Erkennen und Decodieren von QR-Codes aus Bildern bereitstellt. Wir haben ein Beispiel für einen einfachen QR-Code-Scanner bereitgestellt, der diese Klasse verwendet, um den QR-Code aus einem bestimmten Bild zu scannen und zu decodieren.

Manav Narula avatar Manav Narula avatar

Manav is a IT Professional who has a lot of experience as a core developer in many live projects. He is an avid learner who enjoys learning new things and sharing his findings whenever possible.

LinkedIn

Verwandter Artikel - Python OpenCV