yolov5 车牌识别-应用程序原理说明
模型标注
首先,利用labelme,将车牌进行矩形标注,如下,注意了,这里只标注车牌,不标注字符,这么做的目的是为了提高字符的识别度,避免识别字符时,受车牌以外的环境干扰。

标注完之后,利用yolov5进行训练,得到模型文件“best-car.pt”,然后利用pt文件将识别到的车牌矩形框裁剪出来并保存,得到如下图片集,博主这里一共裁剪了200多张车牌。

裁剪完成之后,再对车牌进行字符的标注:

标注完之后,同样的利用yolov5进行训练,得到模型文件“best-number.pt”。
通过以上操作,我们会得到两个pt文件,一个是车牌识别的“best-car.pt”文件,还有一个是车牌字符识别的“best-number.pt”文件。
应用程序流程
步骤1:
输入原始图像,调用best-car.pt模型,提取出所有车牌的ROI图像。

步骤2:
因为扣取出来的图像尺寸不统一,所以我们需要统一一下长度,高度就不用统一了,按比例缩放即可。
长度统一按400像素进行设置,操作如下:
bl = 400 / numberRoi.shape[1]
numberRoi = cv2.resize(numberRoi, (int(numberRoi.shape[1] * bl), int(numberRoi.shape[0] * bl)),
interpolation=cv2.INTER_NEAREST)
步骤3:
调用best-number.pt模型,提取出对车牌预测到的所有字符,包括字符坐标、匹配度等信息,然后对坐标的X轴进行升序排序,得到的就是车牌字符的正确排列顺序了。(下图标记的就是X轴坐标值)


步骤4:
最后只需要对识别到的字符转换成车牌信息输出即可
