VisioForge

Rozpoznawanie tablic rejestracyjnych (ANPR/LPR) w C# i .NET

Odczytuj tablice rejestracyjne pojazdów z kamer IP, kamer internetowych i plików wideo w C#. LicensePlateRecognizerBlock znajduje każdą tablicę, odczytuje ją i zgłasza tekst ze znacznikiem czasu — na urządzeniu, w tym samym potoku, który wyświetla, nagrywa i przesyła wideo.

Czytnik tablic to nie ogólny OCR skierowany na samochód

Automatyczne rozpoznawanie tablic rejestracyjnych — ANPR, nazywane też ALPR lub LPR — to nie ogólny OCR. Ogólny OCR czyta każdy znak, naklejkę i logo w kadrze i nie wie, który tekst jest tablicą. ANPR potrzebuje dwóch modeli: detektora, który znajduje tablice, i modelu OCR wytrenowanego na znakach z tablic. Potrzebne są też klatki — zdekodowane z kamery, pobierane w tempie, za którym nadąża sprzęt, bez zatrzymywania wideo na żywo. W SDK VisioForge LicensePlateRecognizerBlock jest blokiem potoku wideo: SDK dekoduje źródło, blok uruchamia oba modele w wątku w tle, a klatki płyną dalej na ekran, do pliku lub do strumienia sieciowego.

Własne ANPR lub chmurowe API vs. LicensePlateRecognizerBlock

Typowe własne lub chmurowe ANPRLicensePlateRecognizerBlock w potoku VisioForge
Znalezienie tablicyZnaleźć lub wytrenować detektor tablic, wyeksportować go do ONNX, napisać przetwarzanie wstępne i końcoweDetektor tablic FastALPR YOLOv9-T (MIT); DetectionConfidenceThreshold i MaxDetections
Odczyt znakówOgólny OCR, który czyta też każdy inny tekst w kadrzeGłowica fast-plate-ocr przeznaczona do tablic; Text przychodzi wielkimi literami, bez znaków innych niż alfanumeryczne
Pobieranie klatek z kameryOsobny dekoder lub grabber klatek dla każdego rodzaju źródłaDowolne źródło SDK: kamery IP RTSP, kamery internetowe, pliki wideo
Płynne wideo na żywoRozpoznawanie w wątku przechwytywania zatrzymuje strumieńRozpoznawanie działa w workerze w tle; klatki, które przychodzą w trakcie pracy, są pomijane i liczone
Tablice z różnych krajówPonownie wytrenować model lub zmienić dostawcęGłowica globalna dla USA i ponad 90 krajów oraz głowica europejska dla tablic z UE, wybierane przez RecognitionModelPath
Dokąd trafia wideoKlatki wysyłane do usługi w chmurze i rozliczane za wywołanieNigdzie: ONNX Runtime w Twoim procesie, bez klucza API, bez opłat za wywołanie

Co daje blok ANPR

LicensePlateRecognizerBlock jest częścią pakietu VisioForge.DotNet.Core.AI. Ma jedno wejście i jedno wyjście wideo, uruchamia dwa modele ONNX na otrzymanych klatkach i zgłasza tablice przez zdarzenie OnPlateRecognized.

  • Rozpoznawanie dwuetapowe: detektor YOLOv9-T znajduje tablice, a każdą wyciętą tablicę odczytuje model OCR przeznaczony do tablic; oba to modele FastALPR na licencji MIT
  • Pełny wynik dla każdej tablicy: Text, Confidence (od 0 do 1), BoundingBox i czteropunktowy Polygon w pikselach klatki źródłowej, z Timestamp klatki w każdym zdarzeniu
  • Głowice regionalne: głowica globalna obejmuje USA i ponad 90 krajów, europejska jest dostrojona do tablic z UE; obie odczytują znaki łacińskie (cyfry i A–Z), a rozmiar wejścia jest odczytywany z samego modelu
  • Na urządzeniu: ONNX Runtime z DirectML na GPU w Windows, CoreML na platformach Apple i CPU jako rozwiązanie zapasowe; ActiveProvider pokazuje, który jest używany
  • Wideo na żywo pozostaje płynne: rozpoznawanie działa w workerze w tle, FramesToSkip określa, jak często się uruchamia, a LastInferenceTimeMs i DroppedFrameCount pokazują, czy sprzęt nadąża
  • Rozpoznawanie obok nagrywania: DrawResults rysuje ramki i tekst tablic w klatkach, które trafiają dalej do podglądu, pliku lub strumienia
  • Jeden blok dla każdego silnika: podłącz go w potoku Media Blocks SDK .NET albo dodaj przez Video_Processing_AddBlock do VideoCaptureCoreX lub MediaPlayerCoreX

Gdzie się go używa

Wjazd na parking i płatności

Rozpoznaj tablicę kamerą przy bramie, aby otworzyć szlaban lub rozpocząć sesję parkowania.

Rejestr opłat drogowych i kontroli dostępu

Zapisuj, które tablice minęły stałą kamerę i kiedy, z wideo przechowywanym na miejscu.

Zarządzanie flotą i placem

Śledź pojazdy wjeżdżające na teren prywatny lub do zajezdni i z niego wyjeżdżające.

Narzędzia do przeglądu ruchu

Oznaczaj tablice do ręcznej weryfikacji; ostateczne decyzje o sankcjach powinny zawsze obejmować kontrolę człowieka.

Przykłady kodu

Na podstawie License Plate Recognition Demo, które zawiera trzy pliki modeli FastALPR; drugi przykład dodaje blok do VideoCaptureCoreX tak, jak demo Capture OCR X dodaje swój blok AI.

Rejestrowanie tablic z kamery przy bramie

C#

Podgląd kamery IP, lista tablic i nagrywanie do MP4

C#

Potok

W przykładzie z bramą LicensePlateRecognizerBlock znajduje się między kamerą a rendererem zerowym. Tablice wychodzą przez zdarzenie OnPlateRecognized; przy włączonym DrawResults klatki niosą ramki i tekst do kolejnego bloku.

RTSPSourceBlock
LicensePlateRecognizerBlock
NullRendererBlock

Najczęściej zadawane pytania

Czy wideo opuszcza komputer?▼
Nie. LicensePlateRecognizerBlock uruchamia oba modele przez ONNX Runtime w Twoim procesie. Nie ma usługi w chmurze ani klucza API; klatki i numery tablic zostają na urządzeniu. Modele to dwa pliki .onnx dostarczane razem z aplikacją.
Tablice z jakich krajów potrafi odczytać?▼
Globalna głowica rozpoznawania FastALPR obejmuje USA i ponad 90 krajów; osobna głowica europejska jest dostrojona do tablic z UE. Ustaw RecognitionModelPath na głowicę dla swojego regionu; detektor jest ten sam dla obu.
Czy muszę trenować własny model?▼
Nie. Blok używa detektora FastALPR YOLOv9-T i głowicy rozpoznawania fast-plate-ocr w niezmienionej postaci; dostarczasz tylko dwa pliki .onnx. Są dołączone do License Plate Recognition Demo.
A co z zatłoczonymi scenami z wieloma pojazdami lub odległymi tablicami?▼
Blok zgłasza do MaxDetections tablic na klatkę (domyślnie 10). W przypadku małych lub odległych tablic obniż DetectionConfidenceThreshold albo daj kamerze bliższy kadr. W bardzo zatłoczonych scenach detektor pojazdów, taki jak YOLOObjectDetectorBlock, umieszczony wcześniej w potoku może najpierw wyciąć pojazdy.
Którego SDK potrzebuję?▼
LicensePlateRecognizerBlock jest w pakiecie VisioForge.DotNet.Core.AI. Użyj go w potoku Media Blocks SDK .NET, gdy sam budujesz potok, albo dodaj go przez Video_Processing_AddBlock do VideoCaptureCoreX w Video Capture SDK .NET lub do MediaPlayerCoreX w Media Player SDK .NET, gdy Twoja aplikacja już korzysta z jednego z tych silników.
Czy tablice rejestracyjne to dane osobowe?▼
Tablice są zwykle traktowane jako dane osobowe w przepisach o ochronie prywatności, takich jak RODO, a niektóre jurysdykcje mają własne zasady dotyczące ANPR; sprawdź je dla swojego zastosowania przed wdrożeniem. Aby ukryć tablice w nagraniu zamiast je odczytywać, PIIRedactionBlock rozmywa je lub pikselizuje tym samym detektorem tablic.