基于PaddleOCR史上最全车牌号识别实现(三)
2023-12-13 21:09:30
?前言
????????基于PaddleOCR史上最全车牌号识别实现(一)
????????基于PaddleOCR史上最全车牌号识别实现(二)
????????前两篇文章讲了检测模型和识别模型的实现,这一篇文章姗姗来迟,将讲解下两个模型的串联应用和PaddleOCR的源码精简,下面我们来看看如何实现,文章最后有全源码下载。
车牌号识别源码分析
1、添加预测代码
新建deploy目录,加入预测py文件
核心代码如下:
def predict(self, image=None, path="", **kwargs):
if image is not None:
predicted_data = image
elif path != "":
predicted_data = self.read_image(path)
else:
raise TypeError("The input data is inconsistent with expectations.")
dt_boxes, rec_res, _ = self.text_sys(predicted_data)
dt_num = len(dt_boxes)
if dt_num > 0:
rec_res_final = dict()
text, score = rec_res[0]
rec_res_final.update({
'bank_card_number': text,
'score': float(score),
'location': dt_boxes[0].astype(np.int32).tolist()
})
return rec_res_final
else:
return ""
2、模型存放位置
det为检测模型,rec为识别模型
3、参数说明
目前的识别模型是在PP-OCRv2的基础上训练出来的,如何是v3或v4训练的,需要将这里的re_image_shape改成“3,48,320”
4、预测
ocr_license_plate.py文件中添加main方法:
if __name__ == '__main__':
args = {
"use_gpu": False,
"enable_mkldnn": True
}
ocr_license_plate = OCRLicensePlate(args=args)
print(ocr_license_plate.predict(None, "1.jpg"))
python .\deploy\ocr_license_plate.py
结果:
[2023/12/13 19:28:37] ppocr DEBUG: dt_boxes num : 1, elapsed : 0.9797043800354004
[2023/12/13 19:28:37] ppocr DEBUG: rec_res num : 1, elapsed : 0.09100174903869629
{'bank_card_number': '蒙H0070警', 'score': 0.9834597706794739, 'location': [[219, 354], [371, 358], [370, 411], [218, 407]]}
5、命令行检测模型预测
python tools/infer/predict_det.py --det_algorithm="DB" --det_model_dir="./inference/det/" --image_dir="1.jpg" --use_gpu=False --det_db_unclip_ratio=2.0
保存图片到inference_results目录下:
完毕
? ? ? ? 以上就是车牌号识别的整个流程,精简后可直观的进行部署,这里只是做了第一步精简,在infer中和后处理中,还有部分代码可以进一步精简。
精简后源码下载:
文章来源:https://blog.csdn.net/YY007H/article/details/134979890
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!