VisioForge

C# 和 .NET 车牌识别(ANPR/LPR)

用 C# 从 IP 摄像头、网络摄像头和视频文件读取车辆车牌。LicensePlateRecognizerBlock 找到每块车牌,读取它,并连同时间戳报告文本——在设备上完成,就在预览、录制和推流视频的同一条管道中。

每年 €500 起 · Lifetime 许可证 €1,500 起

车牌识别器不是对着汽车的通用 OCR

自动车牌识别(ANPR,也称 ALPR 或 LPR)不是通用 OCR。通用 OCR 会读取画面中的每个招牌、贴纸和标志,并不知道哪段文字是车牌。ANPR 需要两个模型:一个找到车牌的检测器,以及一个用车牌字符训练的 OCR 模型。还需要帧——从摄像头解码,以硬件跟得上的速率选取,同时不让实时视频卡住。在 VisioForge SDK 中,LicensePlateRecognizerBlock 是视频管道中的一个模块:SDK 解码源,模块在后台线程中运行两个模型,帧继续流向屏幕、文件或网络流。

自行构建 ANPR 或调用云 API 与 LicensePlateRecognizerBlock 对比

典型的自建或云端 ANPRVisioForge 管道中的 LicensePlateRecognizerBlock
找到车牌寻找或训练车牌检测器,导出为 ONNX,编写预处理和后处理FastALPR YOLOv9-T 车牌检测器(MIT);DetectionConfidenceThreshold 和 MaxDetections
读取字符通用 OCR,也会读取画面中的其他所有文字车牌专用的 fast-plate-ocr 识别头;Text 转为大写,并去除非字母数字字符
从摄像头获取帧每种源都需要单独的解码器或抓帧器任何 SDK 源:RTSP IP 摄像头、网络摄像头、视频文件
保持实时视频流畅在采集线程中识别会卡住视频流识别在后台工作线程中运行;忙碌时到达的帧会被跳过并计数
不同国家的车牌重新训练模型或更换服务商适用于美国及 90 多个国家的全球识别头和适用于欧盟车牌的欧洲识别头,通过 RecognitionModelPath 选择
视频去向帧被发送到云服务并按调用计费哪里也不去:ONNX Runtime 在您的进程中运行,无需 API 密钥,没有按调用收费

ANPR 模块为您提供什么

LicensePlateRecognizerBlock 包含在 VisioForge.DotNet.Core.AI 包中。它有一个视频输入和一个视频输出,在收到的帧上运行两个 ONNX 模型,并通过 OnPlateRecognized 事件报告车牌。

  • 两阶段识别:YOLOv9-T 检测器找到车牌,每块裁剪出的车牌由车牌专用 OCR 模型读取;两者都是 MIT 许可的 FastALPR 模型
  • 每块车牌的完整结果:Text、Confidence(0 到 1)、BoundingBox 和以源帧像素表示的四点 Polygon,每个事件都带有帧的 Timestamp
  • 区域识别头:全球识别头覆盖美国及 90 多个国家,欧洲识别头针对欧盟车牌调优;两者都识别拉丁字符(数字和 A–Z),输入尺寸从模型本身读取
  • 在设备上运行:ONNX Runtime 在 Windows GPU 上使用 DirectML,在 Apple 平台上使用 CoreML,CPU 作为后备;ActiveProvider 显示当前使用的是哪一个
  • 实时视频保持流畅:识别在后台工作线程中运行,FramesToSkip 设置运行频率,LastInferenceTimeMs 和 DroppedFrameCount 显示硬件是否跟得上
  • 识别与录制并行:DrawResults 将车牌框和文字绘制到继续流向预览、文件或流的帧中
  • 一个模块适用于所有引擎:在 Media Blocks SDK .NET 管道中连接它,或通过 Video_Processing_AddBlock 添加到 VideoCaptureCoreX 或 MediaPlayerCoreX

应用场景

停车场出入与缴费

在道闸摄像头处识别车牌,以抬起道闸或开始一次停车计费。

收费站与门禁记录

记录哪些车牌在何时经过固定摄像头,视频保留在本地。

车队与场站管理

跟踪进出私人场地或车场的车辆。

交通审核工具

标记车牌以供人工审核;最终执法决定应始终包含人工核查。

代码示例

基于随附三个 FastALPR 模型文件的 License Plate Recognition Demo;第二个示例按照 Capture OCR X 演示添加 AI 模块的方式,将该模块添加到 VideoCaptureCoreX。

记录道闸摄像头的车牌

C#

预览 IP 摄像头、列出车牌并录制为 MP4

C#

管道

在道闸示例中,LicensePlateRecognizerBlock 位于摄像头和空渲染器之间。车牌通过 OnPlateRecognized 事件输出;启用 DrawResults 后,帧会把车牌框和文字带到下一个模块。

RTSPSourceBlock
LicensePlateRecognizerBlock
NullRendererBlock

常见问题

视频会离开本机吗?▼
不会。LicensePlateRecognizerBlock 在您的进程中用 ONNX Runtime 运行两个模型。没有云服务,也没有 API 密钥;帧和车牌号码都留在设备上。模型是随应用程序一起分发的两个 .onnx 文件。
它能读取哪些国家的车牌?▼
FastALPR 全球识别头覆盖美国及 90 多个国家;另有一个欧洲识别头针对欧盟车牌调优。将 RecognitionModelPath 指向适合您所在地区的识别头;两者使用相同的检测器。
我需要训练自己的模型吗?▼
不需要。该模块直接使用 FastALPR YOLOv9-T 检测器和 fast-plate-ocr 识别头;您只需提供两个 .onnx 文件。它们随 License Plate Recognition Demo 一起提供。
车辆很多的繁忙场景或远处的车牌怎么办?▼
该模块每帧最多报告 MaxDetections 块车牌(默认 10)。对于较小或较远的车牌,请降低 DetectionConfidenceThreshold,或让摄像头取景更近。在非常繁忙的场景中,可以在前面放置 YOLOObjectDetectorBlock 等车辆检测器,先裁剪出车辆。
我需要哪个 SDK?▼
LicensePlateRecognizerBlock 位于 VisioForge.DotNet.Core.AI 包中。自行构建管道时,在 Media Blocks SDK .NET 管道中使用它;如果您的应用已经使用这些引擎,则通过 Video_Processing_AddBlock 将它添加到 Video Capture SDK .NET 的 VideoCaptureCoreX 或 Media Player SDK .NET 的 MediaPlayerCoreX。
车牌属于个人数据吗?▼
根据 GDPR 等隐私法规,车牌通常被视为个人数据,一些司法辖区还有专门的 ANPR 规定;部署前请针对您的用例进行核查。如果要在录像中隐藏车牌而不是读取它们,PIIRedactionBlock 会使用同一个车牌检测器对其进行模糊或马赛克处理。