Die Kennzeichenerkennungs- und -erkennungstechnologie hat viele Anwendungen. Es kann in Straßensystemen, ticketlosen Parkplätzen, Wohngebäuden mit Zugangskontrolle für Fahrzeuge und mehr verwendet werden. Diese Technologie kombiniert Computer Vision und künstliche Intelligenz.
Sie verwenden Python, um ein Programm zur Erkennung und Erkennung von Nummernschildern zu erstellen. Das Programm nimmt das Eingabebild, verarbeitet es, um das Nummernschild zu erkennen und zu erkennen, und zeigt schließlich die Zeichen des Nummernschilds als Ausgabe an.
Einrichten der Python-Umgebung
Um dieses Tutorial bequem durchzuarbeiten, müssen Sie mit den Python-Grundlagen vertraut sein. Dies beginnt mit der Einrichtung der Programmumgebung.
Bevor Sie mit dem Codieren beginnen, müssen Sie einige Bibliotheken in Ihrer Umgebung installieren. Öffnen Sie eine beliebige Python-IDE und erstellen Sie eine Python-Datei. Führen Sie jeden Befehl auf dem Terminal aus, um die entsprechende Bibliothek zu installieren. Sie sollten einen Vorrang haben
Installation von Python PIP auf Ihrem Computer.-
OpenCV-Python: Sie werden diese Bibliothek verwenden, um das Eingabebild vorzuverarbeiten und verschiedene Ausgabebilder anzuzeigen.
Pip Installieren OpenCV-Python
-
Imutile: Sie werden diese Bibliothek verwenden, um das ursprüngliche Eingabebild auf eine gewünschte Breite zuzuschneiden.
Pip Installieren Imutile
-
Pytesserakt: Sie werden diese Bibliothek verwenden, um die Zeichen des Nummernschilds zu extrahieren und sie in Zeichenfolgen umzuwandeln.
Die Pytesseract-Bibliothek stützt sich auf die Tesseract OCR Motor zur Zeichenerkennung.Pip Installieren Pytesserakt
Was Tesseract OCR ist und wie man es auf Ihrem Computer installiert
Tesseract OCR ist eine Engine, die das kann die Schriftzeichen einer Sprache erkennen. Sie sollten es auf Ihrem Computer installieren, bevor Sie die Pytesseract-Bibliothek verwenden. Dazu:
- Öffnen Sie einen beliebigen Chrome-basierten Browser
- Laden Sie die herunter Tesseract OCR aufstellen
- Führen Sie das Setup aus und installieren Sie es wie jedes andere Programm
Nachdem Sie die Umgebung vorbereitet und tesseract OCR installiert haben, können Sie das Programm programmieren.
1. Importieren der Bibliotheken
Beginnen Sie mit dem Importieren der Bibliotheken, die Sie in der Umgebung installiert haben. Durch den Import der Bibliotheken können Sie deren Funktionen im Projekt aufrufen und nutzen.
importieren Lebenslauf2
importieren Imutile
importieren Pytesserakt
Sie müssen die importieren OpenCV-Python Bibliothek als Lebenslauf2. Importieren Sie die anderen Bibliotheken unter denselben Namen, die Sie zu ihrer Installation verwendet haben.
2. Eingabe übernehmen
Zeigen Sie dann mit pytesseract auf den Ort, an dem die Tesseract-Engine installiert ist. Nehmen Sie das Autobild als Eingabe, indem Sie die verwenden cv2.imread Funktion. Ersetzen Sie den Bildnamen durch den Namen des verwendeten Bildes. Speichern Sie das Bild zur Vereinfachung im selben Ordner wie Ihr Projekt.
pytesseract.pytesseract.tesseract_cmd = 'C:\\Programme\\Tesseract-OCR\\tesseract.exe'
original_image = cv2.imread('image3.jpeg')
Sie können das folgende Eingabebild durch dasjenige ersetzen, das Sie verwenden möchten.
3. Vorverarbeitung der Eingabe
Ändern Sie die Bildbreite auf 500 Pixel. Konvertieren Sie dann das Bild in Graustufen als die schlaue Kantenerkennungsfunktion funktioniert nur mit Graustufenbildern. Ruf doch endlich mal an bilateraler Filter Funktion, um das Rauschen im Bild zu reduzieren.
original_image = imutils.resize (original_image, width=500 )
grey_image = cv2.cvtColor (Originalbild, cv2.COLOR_BGR2GRAY)
grey_image = cv2.bilateralFilter (graues_image, 11, 17, 17)
4. Erkennung des Kennzeichens am Eingang
Das Erkennen des Nummernschilds ist der Vorgang, bei dem der Teil am Auto bestimmt wird, der die Zeichen des Nummernschilds enthält.
Kantenerkennung durchführen
Rufen Sie zunächst die an cv2.Canny Funktion, die automatisch die Kanten auf dem vorverarbeiteten Bild erkennt.
edged_image = cv2.Canny (gray_image, 30, 200)
An diesen Kanten finden wir die Konturen.
Finden der Konturen
Ruf den cv2.findContours Funktion und übergeben Sie eine Kopie der kantiges Bild. Diese Funktion erkennt die Konturen. Zeichnen Sie die erkannten Konturen auf dem Originalbild mit um cv2.drawContours Funktion. Geben Sie schließlich das Originalbild mit allen sichtbaren gezeichneten Konturen aus.
Konturen, neu = cv2.findContours (edged_image.copy(), cv2.RETR_LIST, cv2.CHAIN_APPROX_SIMPLE)
img1 = original_image.copy()
Lebenslauf2.drawContours(Bild1, Konturen, -1, (0, 255, 0), 3)
cv2.imshow("img1", Bild1)
Das Programm zeichnet alle Konturen, die es auf dem Fahrzeugbild findet, markant nach.
Nachdem Sie die Konturen gefunden haben, müssen Sie sie sortieren, um die besten Kandidaten zu identifizieren.
Sortieren der Konturen
Sortieren Sie die Konturen basierend auf der Mindestfläche 30. Ignorieren Sie die darunter, da sie mit geringerer Wahrscheinlichkeit die Nummernschildkontur sind. Erstellen Sie eine Kopie des Originalbildes und zeichnen Sie die Top 30 Konturen auf dem Bild. Zeigen Sie schließlich das Bild an.
Konturen = sortiert (Konturen, Schlüssel = cv2.contourArea, reverse = WAHR)[:30]
# speichert die Nummernschildkontur
screenCnt = Keiner
img2 = original_image.copy()
# zeichnet die 30 obersten Konturen
Lebenslauf2.drawContours(Bild2, Konturen, -1, (0, 255, 0), 3)
cv2.imshow("img2", Bild2)
Es gibt jetzt weniger Konturen als am Anfang. Die einzigen gezeichneten Konturen sind diejenigen, die angenähert sind, um das Nummernschild zu enthalten.
Schließlich müssen Sie die sortierten Konturen durchlaufen und bestimmen, welches das Nummernschild ist.
Looping über die Top 30 Konturen
Erstellen Sie eine for-Schleife, um die Konturen zu durchlaufen. Suchen Sie nach der Kontur mit vier Ecken und bestimmen Sie ihren Umfang und ihre Koordinaten. Speichern Sie das Bild der Kontur, die das Nummernschild enthält. Zeichnen Sie abschließend die Nummernschildkontur auf das Originalbild und zeigen Sie sie an.
Zählung = 0
idx = 7für c in Konturen:
# Annäherung an die Nummernschildkontur
Konturumfang = cv2.arcLength (c, WAHR)
approx = cv2.approxPolyDP(c, 0.018 * Konturumfang, WAHR)# Suchen Sie nach Konturen mit 4 Ecken
Wennlen(ca.)== 4:
screenCnt = ca# Finden Sie die Koordinaten der Nummernschildkontur
x, y, w, h = cv2.boundingRect (c)
new_img = original_image [ y: y + h, x: x + w]# speichert das neue Bild
cv2.imwrite('./'+str (idx)+'.png',new_img)
idx += 1
brechen
# zeichnet die Nummernschildkontur auf das Originalbild
Lebenslauf2.drawContours(Original Bild, [screenCnt], -1, (0, 255, 0), 3)
cv2.imshow("kennzeichen erkannt", Original Bild )
Nach dem Schleifen hat Ihr Programm die Kontur mit dem Nummernschild identifiziert. Es zeichnet nur auf der Nummernschildkontur.
5. Erkennen des erkannten Kennzeichens
Das Erkennen des Nummernschilds bedeutet, die Zeichen auf dem beschnittenen Bild des Nummernschilds zu lesen. Laden Sie das zuvor gespeicherte Kennzeichenbild und zeigen Sie es an. Rufen Sie dann an pytesseract.image_to_string Funktion und übergeben Sie das zugeschnittene Nummernschildbild. Diese Funktion wandelt die Zeichen im Bild in einen String um.
# Dateiname des zugeschnittenen Nummernschildbilds
cropped_License_Plate = './7.png'
Lebenslauf2.imzeigen("abgeschnittenLizenzPlatte", Lebenslauf2.imgelesen(cropped_License_Plate))
# wandelt die Nummernschildzeichen in einen String um
text = pytesseract.image_to_string (cropped_License_Plate, lang='deu')
Das beschnittene Nummernschild ist unten abgebildet. Die Zeichen darauf sind die Ausgabe, die Sie später auf dem Bildschirm drucken.
Nachdem Sie das Nummernschild erkannt und erkannt haben, können Sie die Ausgabe anzeigen.
6. Anzeigen der Ausgabe
Dies ist der letzte Schritt. Sie drucken den extrahierten Text auf dem Bildschirm aus. Dieser Text enthält die Zeichen des Kennzeichens.
drucken("Kennzeichen ist:", Texte)
Lebenslauf2.waitKey(0)
Lebenslauf2.destroyAllWindows()
Die erwartete Ausgabe des Programms sollte der folgenden Abbildung ähneln:
Der Kennzeichentext ist auf dem Terminal ersichtlich.
Schärfen Sie Ihre Python-Fähigkeiten
Das Erkennen und Erkennen von Autokennzeichen in Python ist ein interessantes Projekt, an dem man arbeiten kann. Es ist eine Herausforderung, daher sollte es Ihnen helfen, mehr über Python zu erfahren.
Beim Programmieren ist Übung der Kern der Beherrschung einer Sprache. Um Ihre Fähigkeiten zu üben, müssen Sie an interessanten Projekten arbeiten.