前言
智能交通系统的快速发展,车牌识别技术在安防监控、停车场管理、高速公路收费等多个领域得到了广泛应用。然而,不同厂家提供的车牌识别设备往往有不同的接口标准,给集成商带来了不小的挑战。
为了解决这个问题,今天推荐个用于.NET 的车牌识别对接框架,它提供一套统一的接口标准,可以轻松地与各种车牌识别设备进行对接,极大地简化了集成过程。
项目介绍
IoTSharp.VLPR是一个用于.NET平台的车牌识别对接框架。框架定义了一套标准化的接口规范,允许开发将不同的车牌识别设备无缝集成到自己的项目中。
通过这种方式,用户只需按照标准接口要求提供给厂商,厂商完成对接后,开发只需拷贝对应的动态库到程序目录即可使用,无需额外编写复杂的适配代码。目前,已有数家厂商完成了与IoTSharp.VLPR的对接,证明了其广泛的适用性和灵活性。
项目功能
1、统一接口标准
提供了统一的接口规范,使得不同厂商的车牌识别设备可以方便地集成。
2、动态库加载
支持通过简单的配置文件设置,加载对应厂商提供的动态库。
3、健康检查
集成了健康检查功能,确保系统运行状态良好。
4、多种调用方式
支持初始化、获取车辆信息、抓拍等多种操作,满足不同场景需求。
项目框架
多车牌识别
项目使用
安装使用
dotnet add package IoTSharp.VLPR
添加配置
再appsettings.json中加入下面内容:
"VLPROptions": {
"Interval": 300,
"EasyVLPR": false,
"VLPRConfigs": [
{
"Name": "1",
"Provider": "libvpr_xlw.so.1.0.0.3",
"Port": 5001,
"IPAddress": "10.13.97.91",
"Password": "admin",
"UserName": "admin"
}
]
}
代码示例
namespace Console1
{
publicclassStartup
{
public Startup(IConfiguration configuration)
{
Configuration = configuration;
}
public IConfiguration Configuration { get; }
// This method gets called by the runtime.
//Use this method to add services to the container.
public void ConfigureServices(IServiceCollection services)
{
System.Text.Encoding.RegisterProvider(System.Text.CodePagesEncodingProvider.Instance);
services.AddVPRService();
services.AddHealthChecks()
.AddVLPR("VLPR");
}
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
}
}
}
接口对接规范
1、车牌识别库要求
交付内容:厂商需提供符合命名规范的车牌识别库(共享库文件)。
命名格式:libVpr_<厂家缩写和型号缩写>.so
(例如:libVpr_xlw.so
)
附加要求:提供一个完全测试通过的Demo代码,包含 Makefile
文件,以便验证接口的正确性。
2、Linux共享库(SO)接口定义
1、初始化接口 (Init)
函数声明
long VPR_InitEx(char* capIpAddress, char* username, char* password, int uPort);
或
long VPR_Init(...); // 具体参数未在原文列出,但要求至少实现 VPR_InitEx 或 VPR_Init 之一
调用优先级:程序加载时,优先通过 dlsym
查找 VPR_InitEx
,若不存在则查找 VPR_Init
。
函数说明:用于初始化系统中的车牌识别器。
参数说明
参数 | 说明 |
---|---|
capIpAddress | 车牌识别器的IP地址 |
username | 登录用户名 |
password | 登录密码 |
uPort | 用户自定义端口,当接口库接收到车牌识别器的识别结果时,向此端口发送数据包 |
返回值说明
返回值 | 说明 |
---|---|
<= 0 | 错误: |
> 0 | 成功,返回设备句柄 (Handle) |
2、退出接口 (Quit)
函数声明
BOOL VPR_Quit(long Handle);
函数说明:用于关闭系统中的车牌识别器。
参数说明
参数 | 说明 |
---|---|
Handle | 设备句柄,由 |
值说明: | |
返回值 | 说明 |
:--- | :--- |
TRUE | 关闭成功 |
FALSE | 关闭失败 |
3、获取车辆信息接口 (GetVehicleInfoEx)*
函数声明
int VPR_GetVehicleInfoEx(long Handle, char *pchPlate, unsigned char *iPlateColor, int *piByteBinImagLen, BYTE *pByteBinImage, int *piJpegImageLen, unsigned char* pByteJpegImage, int* laneId, int* index);
函数说明:获取车牌号、车牌二值图、车辆JPEG图像。
参数说明:
参数 | 说明 |
---|---|
Handle | 设备句柄 |
pchPlate | [输出] 返回牌照号 (字符数组) |
iPlateColor | [输出] 返回车牌颜色 (整型) |
piByteBinImagLen | [输出] 返回车辆二值图的大小 (字节) |
pByteBinImage | [输出] 返回车牌二值图 (字节数组) |
piJpegImageLen | [输出] 返回车辆JPEG图像的大小 (字节) |
pByteJpegImage | [输出] 返回车辆的图片 (JPEG格式,字节数组) |
laneId | [输出] 车道号,对应 |
index | [输出] 抓拍ID,对应 |
返回值说明
返回值 | 说明 |
---|---|
TRUE | 获取信息成功 |
FALSE | 获取信息失败 |
iPlateColor
值与颜色对应关系
iPlateColor 值 | 对应颜色 |
---|---|
0 | 蓝 |
1 | 黄 |
2 | 黑 |
3 | 白 |
4 | 渐绿 |
5 | 黄绿 |
6 | 蓝白 |
VPR_GetVehicleInfoEx
接口注意事项
若无识别结果,pchPlate
将返回“无车牌”,iPlateColor
返回 0
。
pchPlate
至少需申请 30字节 空间,最大长度为 64字节。
pByteBinImage
最大需预留 280字节 空间。
pByteJpegImage
最大需预留 1024 * 1024 * 2 字节 (约 2MB) 空间。
中文编码采用 GB2312 编码。
4、触发抓拍接口 (CaptureEx)
函数声明
int VPR_CaptureEx(long Handle, int laneId, int index);
函数说明:当上位机调用该接口时,作为指令触发方式,告知接口需要取一次车牌信息,车牌识别仪收到后进行抓拍。
参数说明
参数 | 说明 |
---|---|
Handle | 设备句柄,由 |
laneId | 车道号,需与相机中配置的相对应 |
index | 抓拍ID,用于区分不同的抓拍结果 |
返回值说明
返回值 | 说明 |
---|---|
TRUE | 发送抓拍命令成功 |
FALSE | 发送抓拍命令失败 |
5、检查状态接口 (CheckStatus)
函数声明
int VPR_CheckStatus(long Handle, char * chVprDevStatus);
函数说明:检查牌照识别器状态。
参数说明
参数 | 说明 |
---|---|
Handle | 设备句柄 |
chVprDevStatus | [输出] 返回牌照识别器状态说明,最长 512字节,中文编码采用 GB2312 编码 |
返回值说明
返回值 | 说明 |
---|---|
TRUE | 牌照识别器状态正常 |
FALSE | 牌照识别器状态不正常 |
设置事件回调接口 (SetEventCallBackFunc)
函数声明
int VPR_SetEventCallBackFunc(long Handle, VPR_EventHandleEx cb);
typedef void (*VPR_EventHandleEx)(long Handle, int laneId, int index);
函数说明:设置回调函数。当收到车牌识别结果时,将调用 VPR_EventHandleEx
类型的回调函数 cb
。
参数说明
参数 | 说明 |
---|---|
Handle | 设备句柄 |
cb | 回调函数指针,类型为 |
回调函数原型:void VPR_EventHandleEx(long Handle, int laneId, int index);
Handle
:设备句柄
laneId
:触发事件的车道号
index
:触发事件的抓拍ID
项目源码
Gitee:https://gitee.com/IoTSharp/VLPR
总结
IoTSharp.VLPR 作为一个用于.NET平台的车牌识别对接框架,不仅简化了不同厂商设备的集成过程,还提供了丰富的功能和良好的用户体验。其标准化的接口设计、灵活的动态库加载机制以及强大的健康检查功能,开发能够专注于业务逻辑的实现,而非繁琐的技术细节。对于需要集成车牌识别功能的企业来说,IoTSharp.VLPR无疑是一个值得信赖的选择。
收藏
点赞
分享
在看