毕业设计So Easy:Spring Boot+Maven+OpenCV实现车牌识别

Posted 不脱发的程序猿

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了毕业设计So Easy:Spring Boot+Maven+OpenCV实现车牌识别相关的知识,希望对你有一定的参考价值。

目录

1、项目概述

2、开发环境

3、项目架构

4、项目功能

5、项目实现

5.1、提取车牌图像

5.1.1、轮廓提取算法

5.1.2、色彩分割提取算法

5.1.3、特征识别提取算法

5.2、车牌字符识别

6、项目效果演示

6.1、车牌识别

6.2、图像处理工具


针对这些问题,决定分享一些软、硬件项目的设计思路和实施方法,希望可以帮助大家,也祝愿各位学子,顺利毕业!

项目专栏:7天搞定毕业设计和论文

计算机技术感兴趣的小伙伴请关注公众号:美男子玩编程,公众号优先推送最新技术博文,创作不易,请各位朋友多多点赞、收藏、关注支持~     


1、项目概述

基于Spring Boot+Maven+OpenCV实现车牌识别,项目贯穿样本处理、模型训练、图像处理、对象检测、对象识别等技术点。

项目资源下载请参见:https://download.csdn.net/download/m0_38106923/87574521 

2、开发环境

  • jdk 1.8.61+
  • maven 3.0+
  • opencv 4.0.1 [或者:javacpp1.4.4、opencv-platform 4.0.1-1.4.4]
  • tess4j 4.3.1
  • spring boot 2.1.5.RELEASE
  • yx-image-recognition 1.0.0版本

3、项目架构

  • B/S 架构,前端html + requireJS,后端java;
  • 数据库使用 sqlite3.0;
  • 接口文档使用swagger 2.0。

4、项目功能

  • 蓝、绿、黄车牌检测及车牌号码识别;
  • 网上常见的轮廓提取车牌算法Java实现;
  • HSV色彩分割提取车牌算法Java实现;
  • harrcascade特征识别算法 Java实现;
  • 基于SVM算法的车牌检测训练Java实现;
  • 基于ANN算法的车牌号码识别训练Java实现;
  • 图片工具:目前实现了HSV色彩切割,后续将添加更多使用的图片处理工具,用于辅助算法优化。

5、项目实现

 车牌识别整体流程主要分两个大的步骤:

  • 使用多种算法,提取到车牌的轮廓,按轮廓从原图片获取车牌的切图,使用SVM算法模型,判断该切图是否是车牌;

  • 根据车牌切图,判定车牌颜色,同时使用轮廓提取算法,提取车牌字符轮廓,按轮廓从二值图片获取车牌切图;使用ANN算法模型,分别使用中文字符模型、蓝牌模型、绿牌模型识别字符切图的文字内容。

5.1、提取车牌图像

其目的是从车牌图片中,提取到包含车牌的图块,这里有三种实现方式:

  • 轮廓提取算法;

  • 色彩分割提取算法;

  • 特征识别提取算法。

5.1.1、轮廓提取算法

  • 该方法是互联网上常见的处理办法,大体流程基本一致,我这里稍微整理,也增加了一些优化;

  • 以上操作步骤,还会包含一些其他小的步骤,比如:轮廓筛选、图像旋转校正等;

  • 这种方法可以说比较具有通用性,自己调整一下一下各个步骤的一些参数,也能在特定场景下,大大增加识别准确率。

- 读取图像,转换大小,然后灰度化图像;
- 高斯模糊,去除噪点;
- sobel运算,检测图像边缘
- 图像二值化,将边缘转成白色(取值255),其他内容转为黑色(取值0)
- 图像闭操作,将临近的边缘线,合并成块
- 边缘腐蚀操作,将一些细小的连接线去掉,分离出一些大的块装区域
- 边缘膨胀,还原腐蚀操作影响的块状区域大小
- 还原图像到原始图像大小,根据二值图像,提取轮廓
- 根据提取的轮廓,从原始图像上,切图
- 将得到的切图,调整到固定大小: 136*36像素,用于SVM算法模型,判断是否是车牌

5.1.2、色彩分割提取算法

这种方法在特定场景下,识别准确率比较高。

- 转换到HSV色彩空间,对hsv取值范围过滤(取值范围,可以使用我的色彩切割工具,大体定位);
- 蓝牌、绿牌、黄牌的操作步骤基本一致,区别仅在于HSV取值范围不一样
- 图像均衡化,增强对比度
- 图像二值化,得到车牌区域
- 图像闭操作,将车牌区域连成片
- 还原图像到原始图像大小,根据二值图像,提取轮廓
- 根据提取的轮廓,从原始图像上,切图
- 将得到的切图,调整到固定大小: 136*36像素,用于SVM算法模型,判断是否是车牌

5.1.3、特征识别提取算法

 这种方法,应用应该也比较广泛,人脸识别也常用这种方法。

- 使用harrcascade模型,直接识别图片中的图块位置,提取图块切图
- 将得到的切图,调整到固定大小: 136*36像素,用于SVM算法模型,判断是否是车牌

5.2、车牌字符识别

车牌字符识别的目的是从车牌图块中,识别车牌的颜色、车牌号码。

- 使用SVM模型算法,判断图块是否是车牌
- 将图块转到HSV色彩空间,图像均衡化之后,根据H的取值范围及占比,计算属于何种颜色车牌
- 原图灰度化、高斯模糊
- 然后直接二值化;对于车牌来说一般仅包含两种颜色
- 边缘腐蚀、膨胀
- 水平或者垂直方向投影去除边框、铆钉干扰等
- 错切校正
- 轮廓提取,轮廓位置、大小校正、轮廓过滤等
- 提取字符图块,调整为统一大小20*20像素,使用ANN算法,识别图块的字符,计算置信度等

车牌字符识别,这种方式比较通用,成功率也比较高。

6、项目效果演示

6.1、车牌识别

6.2、图像处理工具

项目资源下载请参考:https://download.csdn.net/download/m0_38106923/87574521 

以上是关于毕业设计So Easy:Spring Boot+Maven+OpenCV实现车牌识别的主要内容,如果未能解决你的问题,请参考以下文章

Spring Boot + minio 实现高性能存储服务,So Easy~!

Spring Boot + minio 实现高性能存储服务,So Easy~!

Spring Boot 支持 HTTPS 如此简单,So easy

Spring Boot + Flowable 快速实现工作流,So Easy!

Spring Boot 支持 HTTPS 如此简单,So easy!

Spring Boot 支持 HTTPS 如此简单,So easy!