简介

HyperLPR在2023年初已经更新到了v3的版本,该版本与先前的版本一样都是用于识别中文车牌的开源图像算法项目,最新的版本的源码可从github中提取:https://github.com/szad670401/HyperLPR

支持多种类型车牌

快速安装

使用Python平台可以直接使用pip进行安装,方便快捷:

python -m pip install hyperlpr3

快速测试

安装成功后,可以使用命令行工具对本地图像或在线url进行快速测试,这边我们使用一张新能源的车辆照片进行测试:

lpr3 sample -src https://image.xcar.com.cn/attachments/a/day_170125/2017012516_5cb21721d2f35a0f2984HCOTsEuQ6jwg.jpg

测试结果如下:

----------------------------------------2023-02-28 11:27:28.658 | INFO | hyperlpr3.command.sample:sample:70 - 共检测到车牌: 12023-02-28 11:27:28.659 | SUCCESS| hyperlpr3.command.sample:sample:73 - [绿牌新能源]沪AD07979 0.9999245405197144 [582, 1306, 992, 1431]

启动在线API服务

如果您有部署到云端去调用的需求,HyperLPR3中已经内置了启动WebApi服务的功能,支持一键启动,且自带SwaggerUI文档页面,相对方便友好:

# 启动服务 workers为进程数量,请根据需求进行调节lpr3 rest --port 8715 --host 0.0.0.0 --workers 1

启动后可打开SwaggerUI的路径:http://localhost:8715/api/v1/docs 查看和测试在线识别API服务:

启动后即可对车牌识别Api进行使用

在Python代码中快速上手

如果您需要在自己的Python工程中引入HyperLPR3进行车牌识别功能的开发,那您可以使用如下代码进行调用:

# 导入opencv库import cv2# 导入依赖包import hyperlpr3 as lpr3# 实例化识别对象catcher = lpr3.LicensePlateCatcher()# 读取图片image = cv2.imread("images/test_img.jpg")# 识别结果print(catcher(image))

仅需要3行代码即可完成对HyperLPR3库的调用

识别并绘制结果

返回的数据解析非常简单,参考以下代码内容即可,中文字体可在在此下载:https://github.com/szad670401/HyperLPR/blob/master/resource/font/platech.ttf?raw=true

# 导入cv相关库import cv2import numpy as npfrom PIL import ImageFontfrom PIL import Imagefrom PIL import ImageDraw# 导入依赖包import hyperlpr3 as lpr3def draw_plate_on_image(img, box, text, font):x1, y1, x2, y2 = boxcv2.rectangle(img, (x1, y1), (x2, y2), (139, 139, 102), 2, cv2.LINE_AA)cv2.rectangle(img, (x1, y1 - 20), (x2, y1), (139, 139, 102), -1)data = Image.fromarray(img)draw = ImageDraw.Draw(data)draw.text((x1 + 1, y1 - 18), text, (255, 255, 255), font=font)res = np.asarray(data)return res# 中文字体加载font_ch = ImageFont.truetype("platech.ttf", 20, 0)# 实例化识别对象catcher = lpr3.LicensePlateCatcher(detect_level=lpr3.DETECT_LEVEL_HIGH)# 读取图片image = cv2.imread("image.jpg")# 执行识别算法results = catcher(image)for code, confidence, type_idx, box in results:# 解析数据并绘制text = f"{code} - {confidence:.2f}"image = draw_plate_on_image(image, box, text, font=font_ch)# 显示检测结果cv2.imshow("w", image)cv2.waitKey(0)

绘制结果如下:

帮助

以上为HyperLPR3的Python端五分钟快速上手,需要获取其他的帮助,请移步到项目地址:https://github.com/szad670401/HyperLPR