VisioForge

Kennzeichenerkennung (ANPR/LPR) in C# und .NET

Fahrzeugkennzeichen aus IP-Kameras, Webcams und Videodateien in C# lesen. LicensePlateRecognizerBlock findet jedes Kennzeichen, liest es und meldet den Text mit Zeitstempel — lokal auf dem Gerät, in derselben Pipeline, die das Video anzeigt, aufzeichnet und streamt.

Ein Kennzeichenleser ist keine allgemeine OCR, die auf ein Auto zeigt

Automatische Kennzeichenerkennung — ANPR, auch ALPR, LPR oder Nummernschilderkennung genannt — ist keine allgemeine OCR. Allgemeine OCR liest jedes Schild, jeden Aufkleber und jedes Logo im Bild und weiß nicht, welcher Text das Kennzeichen ist. ANPR braucht zwei Modelle: einen Detektor, der Kennzeichen findet, und ein OCR-Modell, das auf Kennzeichenzeichen trainiert ist. Dazu kommen die Frames — von der Kamera dekodiert, in einer Rate ausgewählt, mit der die Hardware mithält, ohne das Live-Video anzuhalten. In den VisioForge SDKs ist LicensePlateRecognizerBlock ein Block der Videopipeline: Das SDK dekodiert die Quelle, der Block führt beide Modelle in einem Hintergrund-Thread aus, und die Frames laufen weiter zum Bildschirm, in eine Datei oder in einen Netzwerkstream.

ANPR selbst bauen oder eine Cloud-API aufrufen vs. LicensePlateRecognizerBlock

Typisches Eigen- oder Cloud-ANPRLicensePlateRecognizerBlock in einer VisioForge-Pipeline
Kennzeichen findenEinen Kennzeichendetektor finden oder trainieren, nach ONNX exportieren, Vor- und Nachverarbeitung schreibenFastALPR-Kennzeichendetektor YOLOv9-T (MIT); DetectionConfidenceThreshold und MaxDetections
Zeichen lesenAllgemeine OCR, die auch jeden anderen Text im Bild liestEin kennzeichenspezifischer fast-plate-ocr-Kopf; Text kommt in Großbuchstaben, ohne nicht-alphanumerische Zeichen
Frames von der Kamera holenEin eigener Decoder oder Frame-Grabber für jede Art von QuelleJede SDK-Quelle: RTSP-IP-Kameras, Webcams, Videodateien
Live-Video flüssig haltenErkennung im Capture-Thread hält den Stream anDie Erkennung läuft in einem Hintergrund-Worker; Frames, die währenddessen eintreffen, werden übersprungen und gezählt
Kennzeichen aus verschiedenen LändernModell neu trainieren oder Anbieter wechselnEin globaler Kopf für die USA und über 90 Länder und ein europäischer Kopf für EU-Kennzeichen, ausgewählt über RecognitionModelPath
Wohin das Video gehtFrames gehen an einen Cloud-Dienst und werden pro Aufruf abgerechnetNirgendwohin: ONNX Runtime in Ihrem Prozess, kein API-Schlüssel, keine Gebühr pro Aufruf

Was der ANPR-Block bietet

LicensePlateRecognizerBlock ist im Paket VisioForge.DotNet.Core.AI enthalten. Er hat einen Videoeingang und einen Videoausgang, führt zwei ONNX-Modelle auf den empfangenen Frames aus und meldet Kennzeichen über das Ereignis OnPlateRecognized.

  • Zweistufige Erkennung: Ein YOLOv9-T-Detektor findet die Kennzeichen, und jedes ausgeschnittene Kennzeichen wird von einem kennzeichenspezifischen OCR-Modell gelesen; beide sind FastALPR-Modelle unter MIT-Lizenz
  • Ein vollständiges Ergebnis pro Kennzeichen: Text, Confidence (0 bis 1), BoundingBox und das Vier-Punkte-Polygon in Pixeln des Quellframes, mit dem Frame-Timestamp in jedem Ereignis
  • Regionale Köpfe: Der globale Kopf deckt die USA und über 90 Länder ab, der europäische Kopf ist auf EU-Kennzeichen abgestimmt; beide lesen lateinische Zeichen (Ziffern und A–Z), die Eingabegröße wird aus dem Modell selbst gelesen
  • Lokal auf dem Gerät: ONNX Runtime mit DirectML auf Windows-GPUs, CoreML auf Apple-Plattformen und der CPU als Fallback; ActiveProvider zeigt, welcher verwendet wird
  • Live-Video bleibt flüssig: Die Erkennung läuft in einem Hintergrund-Worker, FramesToSkip legt fest, wie oft sie läuft, und LastInferenceTimeMs und DroppedFrameCount zeigen, wie die Hardware mithält
  • Erkennung neben der Aufnahme: DrawResults zeichnet Kennzeichenrahmen und Text in die Frames, die weiter zur Vorschau, in eine Datei oder in einen Stream gehen
  • Ein Block für jede Engine: im Media Blocks SDK .NET in die Pipeline einbinden oder mit Video_Processing_AddBlock zu VideoCaptureCoreX oder MediaPlayerCoreX hinzufügen

Wo es eingesetzt wird

Parkplatzzufahrt und Bezahlung

Das Kennzeichen an einer Schrankenkamera erkennen, um die Schranke zu öffnen oder einen Parkvorgang zu starten.

Maut- und Zufahrtsprotokollierung

Festhalten, welche Kennzeichen eine feste Kamera wann passiert haben, mit dem Video vor Ort.

Flotten- und Hofmanagement

Fahrzeuge verfolgen, die ein privates Gelände oder Depot befahren und verlassen.

Werkzeuge zur Verkehrsprüfung

Kennzeichen zur manuellen Prüfung markieren; endgültige Durchsetzungsentscheidungen sollten immer eine menschliche Kontrolle enthalten.

Codebeispiele

Auf Basis der License Plate Recognition Demo, die die drei FastALPR-Modelldateien mitliefert; das zweite Beispiel fügt den Block zu VideoCaptureCoreX hinzu, so wie die Capture OCR X Demo ihren KI-Block hinzufügt.

Kennzeichen einer Schrankenkamera protokollieren

C#

IP-Kamera anzeigen, Kennzeichen auflisten und als MP4 aufzeichnen

C#

Pipeline

Im Schrankenbeispiel sitzt LicensePlateRecognizerBlock zwischen der Kamera und einem Null-Renderer. Kennzeichen verlassen den Block über das Ereignis OnPlateRecognized; mit DrawResults tragen die Frames Rahmen und Text zum nächsten Block.

RTSPSourceBlock
LicensePlateRecognizerBlock
NullRendererBlock

Häufig gestellte Fragen

Verlässt das Video den Rechner?▼
Nein. LicensePlateRecognizerBlock führt beide Modelle mit ONNX Runtime in Ihrem Prozess aus. Es gibt keinen Cloud-Dienst und keinen API-Schlüssel; Frames und Kennzeichen bleiben auf dem Gerät. Die Modelle sind zwei .onnx-Dateien, die Sie mit Ihrer Anwendung ausliefern.
Kennzeichen welcher Länder kann es lesen?▼
Der globale FastALPR-Erkennungskopf deckt die USA und über 90 Länder ab; ein separater europäischer Kopf ist auf EU-Kennzeichen abgestimmt. Setzen Sie RecognitionModelPath auf den Kopf für Ihre Region; der Detektor ist für beide derselbe.
Muss ich ein eigenes Modell trainieren?▼
Nein. Der Block verwendet den FastALPR-Detektor YOLOv9-T und den fast-plate-ocr-Erkennungskopf unverändert; Sie liefern nur die beiden .onnx-Dateien. Sie sind in der License Plate Recognition Demo enthalten.
Was ist mit belebten Szenen mit vielen Fahrzeugen oder weit entfernten Kennzeichen?▼
Der Block meldet bis zu MaxDetections Kennzeichen pro Frame (standardmäßig 10). Bei kleinen oder weit entfernten Kennzeichen senken Sie DetectionConfidenceThreshold oder geben der Kamera einen näheren Bildausschnitt. Bei sehr belebten Szenen kann ein vorgeschalteter Fahrzeugdetektor wie YOLOObjectDetectorBlock die Fahrzeuge zuerst ausschneiden.
Welches SDK brauche ich?▼
LicensePlateRecognizerBlock ist im Paket VisioForge.DotNet.Core.AI enthalten. Verwenden Sie ihn in einer Pipeline des Media Blocks SDK .NET, wenn Sie die Pipeline selbst aufbauen, oder fügen Sie ihn mit Video_Processing_AddBlock zu VideoCaptureCoreX im Video Capture SDK .NET oder zu MediaPlayerCoreX im Media Player SDK .NET hinzu, wenn Ihre App bereits eine dieser Engines nutzt.
Sind Kennzeichen personenbezogene Daten?▼
Kennzeichen gelten nach Datenschutzvorschriften wie der DSGVO in der Regel als personenbezogene Daten, und manche Rechtsordnungen haben eigene ANPR-Regeln; prüfen Sie diese für Ihren Anwendungsfall vor dem Einsatz. Um Kennzeichen in einer Aufnahme zu verbergen statt sie zu lesen, verwischt oder verpixelt PIIRedactionBlock sie mit demselben Kennzeichendetektor.