【项目实战】Python基于OpenCV和卷积神经网络CNN进行车牌号码识别项目实战

343 篇文章 259 订阅

说明:这是一个机器学习实战项目(附带数据+代码+文档+视频讲解),如需数据+代码+文档+视频讲解可以直接到文章最后获取。

1.项目背景

       车牌识别系统(Vehicle License Plate Recognition,VLPR) 是计算机视频图像识别技术在车辆牌照识别中的一种应用。车牌识别在高速公路车辆管理中得到广泛应用,电子收费(ETC)系统中,也是结合DSRC技术识别车辆身份的主要手段。车牌识别技术要求能够将运动中的汽车牌照从复杂背景中提取并识别出来,通过车牌提取、图像预处理、特征提取、车牌字符识别等技术,识别车辆牌号、颜色等信息,目前最新的技术水平为字母和数字的识别率可达到99.7%,汉字的识别率可达到99%。在停车场管理中,车牌识别技术也是识别车辆身份的主要手段。

      车牌识别系统(Vehicle License Plate Recognition)是计算机视频图像识别技术在车辆牌照识别中的一种应用,通常一个车牌识别系统主要包括以下这四个部分:车辆图像获取、车牌定位、车牌字符分割、车牌字符识别。本项目通过OpenCV和卷积伸进网络CNN进行实现。

2.数据获取

本次建模数据来源于网络(本项目撰写人整理而成),数据项统计如下:

数据详情如下(部分展示):

 上图为36种类别,包括26个大写英文字母和0-9数字。

上图为某轿车的图片。

3.数据预处理

3.1 加载和读取数据

关键代码:

使用级联分类器检测车牌的图片上的数据,然后返回处理后的图像。

4.探索性数据分析

4.1.展示输入的图像

关键代码如下:

结果输出如下:

4.2.车牌检测图像

关键代码:

输出:

4.3.车牌图像

关键代码:

 输出:

4.4.车牌轮廓图像

关键代码:

 输出:

4.5.车牌号展示

关键代码:

 

输出:

5.特征工程

5.1.生成训练数据和验证数据

使用图片数据生成器ImageDataGenerator来生成训练数据和验证数据集。

关键代码如下:

6.构建CNN检测模型

主要使用CNN分类算法,用于目标检测。

6.1.建立车牌检测模型

 关键代码如下:

6.2.模型信息

关键代码:

 

输出:

从上图可以清晰地看出神经网络的层数和每层网络的类型,同时可以看到模型的总参数为757268。

7.模型评估

7.1.评估指标

关键代码:

F1分值:99.11%

7.2.预测结果展示

关键代码:

输出结果:

DL8CAF5030

8.结论与展望

综上所述,本文采用OpenCV对图像进行处理、应用CNN卷积神经网络进行车牌识别,最终证明了我们提出的模型效果良好。准确率达到了99.11%,可用于日常生活中进行建模预测,以提高价值。

plate_img = img.copy()
roi = img.copy()
# 检测车牌并返回检测到的车牌轮廓的坐标和尺寸
plate_rect = plate_cascade.detectMultiScale(plate_img, scaleFactor=1.2,
                                            minNeighbors=7)

# 本次机器学习项目实战所需的资料,项目资源如下:


链接:https://pan.baidu.com/s/1t4DdmX77ZCjdPL4XTRcjzQ 
提取码:3hxz








for (x, y, w, h) in plate_rect:
    # roi_ = roi[y:y + h, x:x + w, :]
    plate = roi[y:y + h, x:x + w, :]  # 提取车盘所在的区域
    cv2.rectangle(plate_img, (x + 2, y), (x + w - 3, y + h - 5), (51, 181, 155),
                  3)  # 最后通过在边缘周围绘制矩形来表示检测到的轮廓

if text != '':
    # 添加文字
    plate_img = cv2.putText(plate_img, text, (x - w // 2, y - h // 2),
                               cv2.FONT_HERSHEY_COMPLEX_SMALL, 0.5, (51, 181, 155), 1, cv2.LINE_AA)
  • 9
    点赞
  • 147
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
Python中提取车牌号码的方法可以通过以下步骤实现: 1. 首先,加载已裁剪的车牌图像并显示它。可以使用OpenCV的cv2.imshow函数来显示图像。\[1\] 2. 接下来,使用pytesseract库的image_to_string函数将图像中的字符转换为字符串。可以将已裁剪的车牌图像作为参数传递给该函数,并指定语言为英语。\[1\] 3. 另一种方法是使用深度学习模型进行车牌识别。这个方法分为五个步骤:\[2\] a. 使用语义分割模型分割车牌。 b. 使用DeepLab V3+模型将车牌从图像中抠出来。 c. 将车牌字符一个个分割开。 d. 训练一个预训练模型来识别单个车牌字符。 e. 使用训练好的预训练模型识别分割好的字符,从而得到车牌号码。 4. 另一种方法是通过遍历轮廓来提取车牌号码。可以使用OpenCV的findContours函数找到图像中的轮廓,并使用approxPolyDP函数来近似轮廓的形状。然后,可以通过判断轮廓的角点数量来确定是否为车牌轮廓。最后,可以使用boundingRect函数获取车牌的坐标,并将其存储为新的图像。可以在原始图像上绘制车牌轮廓并显示出来。\[3\] 请注意,以上方法仅提供了一些常用的车牌识别方法,具体的实现可能因应用场景和需求而有所不同。 #### 引用[.reference_title] - *1* *3* [简直太逆天了,使用Python来检测和识别车牌号码(附代码)](https://blog.csdn.net/weixin_43373042/article/details/130234567)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [【python + opencv + pytorch】车牌提取、分割、识别 pro版](https://blog.csdn.net/weixin_41645749/article/details/124599578)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

胖哥真不错

您的鼓励,将是我最大的坚持!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值