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 对比
| 典型的自建或云端 ANPR | VisioForge 管道中的 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 后,帧会把车牌框和文字带到下一个模块。
常见问题
视频会离开本机吗?▼
它能读取哪些国家的车牌?▼
我需要训练自己的模型吗?▼
车辆很多的繁忙场景或远处的车牌怎么办?▼
我需要哪个 SDK?▼
车牌属于个人数据吗?▼
文档和示例
车牌识别指南
LicensePlateRecognizerBlock 及其设置:模型、区域识别头、每项设置及其默认值、故障排除。
License Plate Recognition Demo(WPF)
Media Blocks SDK .NET 示例:在网络摄像头、视频文件或 RTSP 摄像头上进行 ANPR,附带 FastALPR 模型。
VideoCaptureCoreX 和 MediaPlayerCoreX 中的 AI 模块
如何向采集引擎和播放引擎添加处理模块:插入顺序和生命周期。
目标检测
YOLOObjectDetectorBlock:在繁忙场景中于 ANPR 之前检测车辆。
个人信息遮挡
PIIRedactionBlock:在设备上对视频中的车牌、人脸和屏幕文字进行模糊或马赛克处理。
视频流 OCR
视频中的其他所有文字——招牌、标签、字幕条和屏幕内容——请使用 OcrBlock。
开始读取车牌
下载功能完整的 30 天试用版并运行 License Plate Recognition Demo。根据引擎和输出的不同,可能会出现水印或未注册提示。
支持车牌识别的 SDK
Media Blocks SDK .NET
管道 SDK:将 LicensePlateRecognizerBlock 放在任意源与渲染器、编码器或网络输出之间。
了解更多 →Video Capture SDK .NET
采集 SDK:将模块添加到 VideoCaptureCoreX,在预览和录制的同时读取摄像头中的车牌。
了解更多 →Media Player SDK .NET
播放器 SDK:将模块添加到 MediaPlayerCoreX,读取所播放文件和流中的车牌。
了解更多 →每年 €500 起 · Lifetime 许可证 €1,500 起
