VisioForge

Reconocimiento de matrículas (ANPR/LPR) en C# y .NET

Lea matrículas de vehículos desde cámaras IP, webcams y archivos de video en C#. LicensePlateRecognizerBlock encuentra cada matrícula, la lee e informa el texto con una marca de tiempo — en el dispositivo, en el mismo pipeline que muestra, graba y transmite el video.

Un lector de matrículas no es OCR general apuntando a un coche

El reconocimiento automático de matrículas — ANPR, también llamado ALPR, LPR o reconocimiento de placas — no es OCR general. El OCR general lee cada letrero, pegatina y logotipo del fotograma y no sabe qué texto es la matrícula. ANPR necesita dos modelos: un detector que encuentra las matrículas y un modelo OCR entrenado con caracteres de matrículas. También necesita los fotogramas — decodificados desde la cámara, seleccionados a un ritmo que el hardware pueda sostener, sin detener el video en vivo. En los SDK de VisioForge, LicensePlateRecognizerBlock es un bloque del pipeline de video: el SDK decodifica la fuente, el bloque ejecuta ambos modelos en un hilo en segundo plano, y los fotogramas siguen hacia la pantalla, un archivo o un flujo de red.

Construir ANPR usted mismo o llamar a una API en la nube vs. LicensePlateRecognizerBlock

ANPR típico propio o en la nubeLicensePlateRecognizerBlock en un pipeline de VisioForge
Encontrar la matrículaBuscar o entrenar un detector de matrículas, exportarlo a ONNX, escribir el pre y posprocesamientoDetector de matrículas FastALPR YOLOv9-T (MIT); DetectionConfidenceThreshold y MaxDetections
Leer los caracteresOCR general que también lee cualquier otro texto del fotogramaUna cabeza fast-plate-ocr específica para matrículas; Text llega en mayúsculas, sin caracteres no alfanuméricos
Obtener fotogramas de la cámaraUn decodificador o capturador de fotogramas distinto para cada tipo de fuenteCualquier fuente del SDK: cámaras IP RTSP, webcams, archivos de video
Mantener fluido el video en vivoEl reconocimiento en el hilo de captura detiene el flujoEl reconocimiento se ejecuta en un worker en segundo plano; los fotogramas que llegan mientras está ocupado se omiten y se cuentan
Matrículas de distintos paísesReentrenar el modelo o cambiar de proveedorUna cabeza global para EE. UU. y más de 90 países y una cabeza europea para matrículas de la UE, elegidas con RecognitionModelPath
Adónde va el videoFotogramas enviados a un servicio en la nube y facturados por llamadaA ninguna parte: ONNX Runtime en su proceso, sin clave de API, sin tarifa por llamada

Lo que ofrece el bloque ANPR

LicensePlateRecognizerBlock se incluye en el paquete VisioForge.DotNet.Core.AI. Tiene una entrada y una salida de video, ejecuta dos modelos ONNX sobre los fotogramas que recibe e informa las matrículas mediante el evento OnPlateRecognized.

  • Reconocimiento en dos etapas: un detector YOLOv9-T encuentra las matrículas y cada matrícula recortada la lee un modelo OCR específico para matrículas; ambos son modelos FastALPR con licencia MIT
  • Un resultado completo por matrícula: Text, Confidence (de 0 a 1), BoundingBox y el Polygon de cuatro puntos en píxeles del fotograma de origen, con el Timestamp del fotograma en cada evento
  • Cabezas regionales: la cabeza global cubre EE. UU. y más de 90 países, la cabeza europea está ajustada para matrículas de la UE; ambas leen caracteres latinos (dígitos y A–Z), y el tamaño de entrada se lee del propio modelo
  • En el dispositivo: ONNX Runtime con DirectML en GPU de Windows, CoreML en plataformas de Apple y la CPU como alternativa; ActiveProvider indica cuál se usa
  • El video en vivo sigue fluido: el reconocimiento se ejecuta en un worker en segundo plano, FramesToSkip define con qué frecuencia se ejecuta, y LastInferenceTimeMs y DroppedFrameCount muestran si el hardware da abasto
  • Reconocimiento junto a la grabación: DrawResults dibuja los recuadros y el texto de las matrículas en los fotogramas que siguen hacia la vista previa, un archivo o un flujo
  • Un bloque para cada motor: conéctelo en un pipeline de Media Blocks SDK .NET, o añádalo con Video_Processing_AddBlock a VideoCaptureCoreX o MediaPlayerCoreX

Dónde se usa

Acceso y pago de aparcamiento

Reconozca la matrícula en una cámara de acceso para abrir la barrera o iniciar una sesión de aparcamiento.

Registro de peajes y control de acceso

Registre qué matrículas pasaron ante una cámara fija y cuándo, con el video guardado en sus instalaciones.

Gestión de flotas y patios

Controle los vehículos que entran y salen de un recinto privado o un depósito.

Herramientas de revisión de tráfico

Marque matrículas para revisión manual; las decisiones finales de sanción deben incluir siempre una verificación humana.

Ejemplos de código

Basados en la License Plate Recognition Demo, que incluye los tres archivos de modelo FastALPR; el segundo ejemplo añade el bloque a VideoCaptureCoreX igual que la demo Capture OCR X añade su bloque de IA.

Registrar las matrículas de una cámara de acceso

C#

Ver una cámara IP, listar las matrículas y grabar en MP4

C#

Pipeline

En el ejemplo de acceso, LicensePlateRecognizerBlock se sitúa entre la cámara y un renderizador nulo. Las matrículas salen por el evento OnPlateRecognized; con DrawResults activado, los fotogramas llevan los recuadros y el texto al bloque siguiente.

RTSPSourceBlock
LicensePlateRecognizerBlock
NullRendererBlock

Preguntas frecuentes

¿El video sale de la máquina?▼
No. LicensePlateRecognizerBlock ejecuta ambos modelos con ONNX Runtime dentro de su proceso. No hay servicio en la nube ni clave de API; los fotogramas y los números de matrícula se quedan en el dispositivo. Los modelos son dos archivos .onnx que usted distribuye con su aplicación.
¿Matrículas de qué países puede leer?▼
La cabeza de reconocimiento global de FastALPR cubre EE. UU. y más de 90 países; una cabeza europea aparte está ajustada para matrículas de la UE. Apunte RecognitionModelPath a la cabeza de su región; el detector es el mismo para ambas.
¿Tengo que entrenar mi propio modelo?▼
No. El bloque usa el detector FastALPR YOLOv9-T y la cabeza de reconocimiento fast-plate-ocr tal cual; usted solo aporta los dos archivos .onnx. Se incluyen con la License Plate Recognition Demo.
¿Y las escenas concurridas con muchos vehículos o matrículas lejanas?▼
El bloque informa hasta MaxDetections matrículas por fotograma (10 por defecto). Para matrículas pequeñas o lejanas, reduzca DetectionConfidenceThreshold o acerque la vista de la cámara. En escenas muy concurridas, un detector de vehículos como YOLOObjectDetectorBlock colocado antes puede recortar primero los vehículos.
¿Qué SDK necesito?▼
LicensePlateRecognizerBlock está en el paquete VisioForge.DotNet.Core.AI. Úselo en un pipeline de Media Blocks SDK .NET cuando construya el pipeline usted mismo, o añádalo con Video_Processing_AddBlock a VideoCaptureCoreX en Video Capture SDK .NET o a MediaPlayerCoreX en Media Player SDK .NET cuando su aplicación ya use uno de esos motores.
¿Las matrículas son datos personales?▼
Las matrículas suelen considerarse datos personales según normas de privacidad como el RGPD, y algunas jurisdicciones tienen reglas propias para ANPR; revíselas para su caso de uso antes de desplegar. Para ocultar matrículas en una grabación en lugar de leerlas, PIIRedactionBlock las desenfoca o pixela con el mismo detector de matrículas.