XLPR SDK适用于为各种应用增加车牌自动识别能力,支持多个区域检测,支持车牌颜色和号码输出,提供Web API和 原生API。官方下载地址:XLPR车牌识别开发包。
XLPR主要由三个主要部分构成:D-Net、R-NET和C-Net,分别负责车牌区域的检测、车牌号码识别 和车牌颜色识别,如下图所示:
1、目录组织
XLPR开发包的目录组织说明如下:
xlpr_sdk
| - core # 核心代码目录
| - d_net.py # 车牌检测网络
| - r_net.py # 号码识别网络
| - c_net.py # 颜色识别网络
| - utils.py # 辅助模块
| - weights # 预训练权重目录
| - d-net-c.pt # d_net权重
| - r-net-c.pt # r_net权重
| - c-net-c.pt # c_net权重
| - samples # 测试图片目录
| - test-1.jpg
| - ....
| - serve.py # Web UI及API服务
| - api_test.py # Web API调用示例代码
| - requirements.txt # 依赖声明文件
在第一次使用之前,首先安装依赖文件:
pip install -r requirements.txt
2、使用Web UI
执行如下命令启动Web UI:
python serve.py
然后使用浏览器访问 http://127.0.0.1:7860
,即可打开Web UI。
在Web UI中打开一个图像文件,然后点击[Submit]按钮,就可以进行识别,如下图所示:
右侧的输出图像上叠加了检测到的车牌信息,输出结果为一个数组,每个成员包含如下字段:
- bbox: 车牌的包围框
- label: 车牌号码
- color: 车牌颜色,blue:蓝色 | green: 绿色 | yellow: 黄色
下图是检测新能源车牌的示例:
下图是检测黄牌的示例:
3、使用Web API
api_name: /predict
输入参数:
img_in
:输入图像
输出结果:
- [0] :输出图像文件路径
- [1] :检测结果数组,每个成员包含如下字段:
bbox
|label
|color
Python调用示例如下:
from gradio_client import Client, handle_file
client = Client("http://127.0.0.1:7860/")
result = client.predict(
img_in=handle_file('./samples/test-1.jpg'),
api_name="/predict" )
print(result)
执行结果如下:
Web API特别适合将车牌识别能力集成到Java、C#、Javascript等其他语言开发的应用中。
4、使用原生API
除了Web API,XLPR SDK也提供了Python原生API。
4.1 入口类
XLpr
是SDK的入口类,使用其predict()
方法对传入的图片进行处理,并返回叠加 结果的图片和检测结果数据。
XLpr
实例的predict()
调用示例代码如下:
from core.xlpr import XLpr
import cv2
xlpr = XLpr()
img_in = cv2.imread('samples/test-1.jpg')
img_out, results = xlpr.predict(img_in)
4.2 车牌检测类
DetectionNet
是D-NET
的实现类,使用其predict()
方法对传入的图片进行处理,并 返回车牌包围框集合。
DetectionNet
实例的predict()
方法调用示例代码如下:
from core.d_net import DetectionNet
import cv2
d_net = DetectionNet()
img_list = [ cv2.imread('samples/test-1.jpg') ]
bbxs_list = d_net.predict(img_list)
4.3 车牌号码识别类
RecognitionNet
是R-NET
的实现类,使用其predict_image_patches()
方法对指定的 图片的多个区域进行号码识别。例如:
from core.d_net import DetectionNet
from core.r_net import RecognitionNet
import cv2
d_net = DetectionNet()
r_net = RecognitionNet()
img_list = [ cv2.imread('samples/test-1.jpg') ]
bbxs_list = d_net.predict(img_list)
img, bbxs = img_list[0], bbxs_list[0]
labels = r_net.predict_image_patches(img, bbxs)
4.4 车牌颜色识别类
ColorNet
是C-NET
的实现类,使用其predict_image_patches()
方法对指定的图片的多个 区域进行颜色识别。例如:
from core.d_net import DetectionNet
from core.c_net import ColorNet
import cv2
d_net = DetectionNet()
c_net = ColorNet()
img_list = [ cv2.imread('samples/test-1.jpg') ]
bbxs_list = d_net.predict(img_list)
img, bbxs = img_list[0], bbxs_list[0]
colors = c_net.predict_image_patches(img, bbxs)
原文链接:XLPR车牌识别开发包 - 汇智网