车牌识别系统
1.课程设计内容
车牌识别系统(License Plate Recognition)利用 OpenCV 实现车牌的提取,使用 Tesseract-OCR 识别车牌字符,基于 ASP.NET 和 Bootstrap3.3.7 编写了一个简单的系统操作界面。
2.交互方式
打开 OpenCV_Web 目录,双击 OpenCVWeb.sln 文件,在 Google Chrome 运行项目,点击“Start now”进入登录界面,username 由用户自定义,password 默认为“123456”,登录后主界面左上角设置了菜单栏。
点击 Menu 菜单下的 Open Image,打开一张格式为.jpg、.png 或者.jpeg 且大小在 200KB 以下的带车牌的图片,显示图片后点击“识别车牌”,运行 OpenCV.exe 文件,进行车牌识别,并记录在数据库 LicensePlate 中。
点击 Menu 菜单下的 View Results,点击“显示数据”,从后台数据库 LicensePlate 获取已识别的车牌号码及识别的系统时间,在表格中显示数据。
点击 Menu 菜单下的 Exit System,回到登录界面。
点击 Setting 菜单下的 Preference,选择提供的颜色,修改标题栏或按钮颜色。
点击 Setting 菜单下的 View Code,点击“查看 main.cpp”或者“查看 template.cpp”,在文本框中显示本系统的 C++ 源码。
3.开发平台/工具简介
3.1.OpenCV 3.4.2
OpenCV 是一个基于 BSD 许可(开源)发行的跨平台计算机视觉库,可以运行在 Linux、Windows、Android 和 Mac OS 操作系统上,轻量级而且高效,由一系列 C 函数和少量 C++ 类构成,同时提供了 Python、Ruby、MATLAB 等语言的接口,实现了图像处理和计算机视觉方面的很多通用算法,这些语言的 API 接口函数可以通过在线文档获得。
3.2.OCR
OCR(Optical Character Recognition,光学字符识别)是指电子设备(例如扫描仪或数码相机)检查纸上打印的字符,通过检测暗、亮的模式确定其形状,然后用字符识别方法将形状翻译成计算机文字的过程;即,针对印刷体字符,采用光学的方式将纸质文档中的文字转换成为黑白点阵的图像文件,并通过识别软件将图像中的文字转换成文本格式,供文字处理软件进一步编辑加工的技术。
3.3.ASP.NET
ASP.NET 又称为 ASP+,不仅仅是 ASP 的简单升级,而是微软公司推出的新一代脚本语言,基于.NET Framework 的 Web 开发平台。
3.4.Bootstrap3.3.7
Bootstrap 是基于 HTML、CSS、JavaScript 开发的简洁、直观、强悍的前端开发框架,使得 Web 开发更加快捷。
3.5.C#
C#综合了 VB 可视化操作和 C++ 的高运行效率,是.NET 开发的首选语言。
3.6.LINQ
语言集成查询(Language Integrated Query, LINQ),当前可支持 C#以及 Visual Basic .NET 语言,包括 LINQ to Objects、LINQ to SQL、LINQ to Datasets、LINQ to Entities、LINQ to Data Source、LINQ to XML/XSD 等。
3.7.jQuery
jQuery 是一个快速、简洁的 JavaScript 框架,设计的宗旨是“write Less,Do More”。它封装 JavaScript 常用的功能代码,提供一种简便的 JavaScript 设计模式,优化 HTML 文档操作、事件处理、动画设计和 AJAX 交互。
3.8.Visual Studio 2017 专业版
Visual Studio 是一套基于组件的软件开发工具和其他技术,可用于构建功能强大、性能出众的应用程序。
3.9.Microsoft SQL Server Management Studio 2017
SQL Server Management Studio 组合了大量图形工具和丰富的脚本编辑器,使各种技术水平的开发人员和管理员都能访问 SQL Server。
4.总体设计
系统首页登录模块:此模块主要负责展示系统大概并提供登录入口;
打开图片识别模块:此模块主要负责读取用户选择的图片并调用 exe 进行识别;
显示查询历史模块:此模块主要负责显示查询过的车牌号码及查询时间;
修改界面颜色模块:此模块主要负责 jQuery 随用户选择修改界面样式;
展示识别代码模块:此模块主要负责调用根目录的 txt 文件在页面显示源代码;
设计数据库表模块:此模块主要负责创建 LicensePlate 数据库及 License 数据表;
前端界面交互模块:此模块主要负责在前端界面中连接数据库及读取数据;
车牌提取部分模块:此模块主要负责利用 OpenCV 进行车牌提取;
车牌识别部分模块:此模块主要负责利用 OCR 进行车牌号码的识别。
5.人员分工
参与整体设计与规划,负责前端界面和数据库的设计及编码、报告的撰写;
参与整体设计与规划、报告的撰写,负责后端程序和数据库的设计及编码。
6.详细设计
6.1.功能模块 1:系统首页登录
6.1.1.功能模块 1.1:系统首页
罗列系统名称,使用 Bootstrap 美化,提供跳转登录界面的入口。
6.1.2.功能模块 1.2:登录
利用表单实现用户名及密码的输入,使用 Bootstrap 美化,通过读取 Session 数据获得用户名,检验输入合法性,密码与给定的“123456”一致则予以登录并跳转至系统主页。
6.2.功能模块 2:打开图片识别
6.2.1.功能模块 2.1:打开图片
利用 ASP.NET 母版页,使用 Bootstrap 美化,读取根目录下的 uploads 文件下的图片,判断图片是否符合要求,将合格的图片在页面中显示。
6.2.2.功能模块 2.2:识别图片并存入数据库
提供按钮运行 exe 程序,识别选中图片的车牌号码,将识别结果保存为 uploads 下的 txt 文件,再将 txt 文件数据存入数据库中。
6.3.功能模块 3:显示查询历史
利用 ASP.NET 母版页,使用 Bootstrap 美化,运用 LINQ to SQL 技术建立与 LicensePlate 数据库的连接,并获取 License 数据表数据,显示在页面中。
6.4.功能模块 4:修改界面颜色
利用 ASP.NET 母版页,使用 Bootstrap 美化,通过在母版页中编写 jQuery 代码的方式,获取用户选中的 radio 按钮的值,对应修改标题栏或者按钮的 CSS 样式,实现用户自定义界面的功能。
6.5.功能模块 5:展示识别代码
利用 ASP.NET 母版页,使用 Bootstrap 美化,读取根目录下的 uploads 文件夹下的代码文件“main.txt”、“ImageProcess.txt”、“Recognition.txt”,调用 TextReader 类逐行读取并在页面中输出代码。
6.6.功能模块 6:设计数据库表
新建数据库 LicensePlate,新建数据表 License,添加主键字段 number,记录已经识别过的车牌号码,添加字段 time,记录加入该车牌号码加入数据库的系统时间。
6.7.功能模块 7:前端界面交互
利用 ASP.NET 母版页,使用 Bootstrap 美化,通过 GridView 和 LinqDataSource 控件,绑定数据库,使用 LINQ 将 uploads 文件下保存的已识别的车牌号码加入数据库,并在前端页面中显示 License 数据表中的数据。
7.设计结果及分析
7.1.系统首页
添加了网站图标,应用了 Bootstrap 框架
7.2.登录界面
增加了输入合法性的验证,Session 获取用户名
可提升:利用 Cookie 同时保存用户名及密码,下次进入时自动登录
7.3.打开图片
验证图片格式及大小,成功上传后打开 exe
可提升:扩充图片格式,增加.gif 格式图片的识别
.
7.4.查看结果
与数据库交互,显示数据库数据
7.5.修改颜色
jQuery 操作页面 CSS 样式更改颜色
7.6.查看代码
读取 txt 文件,显示代码
8.问题及心得体会
本次课程设计过程总体而言是秩序井然的,从确定选题到分工合作再到确定作品模型都进行的十分顺利,利用所学 OpenCV 及 ASP.NET 的知识进行设计编码,结合 Bootstrap 框架以及 OCR 技术提升作品的质量。
目前存在且暂时无法解决的问题是,与数据库交互时,当 openImage.aspx 运行完 OpenCV.exe 之后,该页面后续代码无法继续运行,导致页面间传参时无法将识别到的车牌号码及时间传递给 viewResults.aspx 页面,从而无法将数据插入数据库中,也无法更新数据库的数据,表现在点击“更新数据”按钮后程序报错,后续将进一步对此问题进行研究。
当然,该设计作品还有其他问题需完善,首先界面功能过于简单,可以多增加其他功能,例如改为移动端平台的系统,或者增加调用设备摄像头拍摄车牌号码进行识别;其次该作品限制因素较多,因网上车牌图片多为单数字重复号码,设计的程序容错度较低,且图片限制为 200KB,可以考虑添加裁剪图片的程序,确保用户每一张图片都可以选中并进行识别。
通过本次课程设计活动,进一步加深对 OpenCV 操作图像的理解,学会了将 DOC 窗口的运行结果显示在 UI 界面上,提升了自身的编程及项目规划能力。
9.对本设计过程及方法、手段的改进建议
- 界面功能过于简单
可以多增加其他功能,例如增加调用设备摄像头拍摄车牌号码进行识别。
- 网页操作繁琐
可以编写成移动端平台的系统。
- ASP.NET 技术不够主流
可以考虑使用 Python 语言进行编写。在设计过程初期,曾考虑过在 Linux 系统下利用 Python3 及 tkinter 编写 UI 界面,后遇到程序所需包 Pillow 无法安装的问题,后改为 Windows 系统下 ASP.NET 编写。
10.参考文献
1.开发平台工具简介参考自百度百科
- 系统首页及登录的背景图片来源于百度图片
- 部分代码参考自《Web 程序设计——ASP.NET 实用网站开发(第 3 版)》
- 页面跳转 exe 参考自 https://blog.csdn.net/qq_42146775/article/details/101224910
- 页面之间传参参考自 https://blog.csdn.net/liang520521/article/details/80286195
♻️ 资源
大小:5.98MB
➡️资源下载:https://download.csdn.net/download/s1t16/87404238
注:更多内容可关注微信公众号【神仙别闹】,如当前文章或代码侵犯了您的权益,请私信作者删除!