一库通吃!.NET 平台下的智能车牌识别标准化方案

前言

智能交通系统的快速发展,车牌识别技术在安防监控、停车场管理、高速公路收费等多个领域得到了广泛应用。然而,不同厂家提供的车牌识别设备往往有不同的接口标准,给集成商带来了不小的挑战。

为了解决这个问题,今天推荐个用于.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 (网络错误), -1 (登录失败), -2 (其他错误)

> 0

成功,返回设备句柄 (Handle)

2、退出接口 (Quit)

函数声明

BOOL VPR_Quit(long Handle);

函数说明:用于关闭系统中的车牌识别器。

参数说明

参数

说明

Handle

设备句柄,由 VPR_Init 或 VPR_InitEx 返回

值说明:

返回值

说明

:---

:---

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

[输出] 车道号,对应 VPR_CaptureEx 中传入的车道号

index

[输出] 抓拍ID,对应 VPR_CaptureEx 中传入的抓拍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

设备句柄,由 VPR_Init 或 VPR_InitEx 返回

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

回调函数指针,类型为 VPR_EventHandleEx

回调函数原型void VPR_EventHandleEx(long Handle, int laneId, int index);

Handle:设备句柄

laneId:触发事件的车道号

index:触发事件的抓拍ID

项目源码

Gitee:https://gitee.com/IoTSharp/VLPR

总结

IoTSharp.VLPR 作为一个用于.NET平台的车牌识别对接框架,不仅简化了不同厂商设备的集成过程,还提供了丰富的功能和良好的用户体验。其标准化的接口设计、灵活的动态库加载机制以及强大的健康检查功能,开发能够专注于业务逻辑的实现,而非繁琐的技术细节。对于需要集成车牌识别功能的企业来说,IoTSharp.VLPR无疑是一个值得信赖的选择。   

收藏

点赞

分享

在看

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值