一、前言
1.1 实践目的和要求
本次实践的目的是为了帮助学生强化对实践涉及专业技术知识的理解,掌握专业领域中软件知识的应用方法,并了解软件工程在具体行业领域的发展趋势。通过综合实践使学生了解图形图像处理的典型应用场景,学习并熟悉图形图像处理常用软件开发工具以及开发平台搭建的步骤,深入理解和掌握图形图像处理方法,强化使用软件工程方法开发软件应用系统的能力。同时经过图形图像领域的探索,掌握图形图像专业领域应用软件的设计思路和开发方法。最终目的是使学生具备终身学习并适应软件产业持续发展的能力。这一系列任务的完成将为学生提供全面发展和就业竞争力。
本次实践要求学生从实际问题出发,进行为期五周的综合实践,利用所学专业知识和软件开发流程,独自进行需求分析、系统设计、系统开发和测试,并提交完整的应用系统及相关文档。学生还需具备团队协作能力,良好的沟通和组织协调能力,熟练运用VC++、Java、Matlab、Opencv、Opengl等软件开发工具,能独立解决复杂问题,并具备语言和文字表达能力。这样的要求旨在培养学生的综合能力和适应职业发展的能力。
1.2 实践项目背景及意义
随着技术的进步和需求的不断扩展,图形图像软件技术在各行各业中得到了广泛应用和发展。然而,开发高质量的图形图像软件需要严格的规范和流程,对软件开发者的能力和素质提出了更高的要求。随着经济建设的快速发展,人民物质生活水平不断丰富,汽车拥有量不断增加,给人民出行带来便利的同时,也使得城市交通问题日益严重,停车场车位不足的问题日益凸显。目前,有偿使用停车场可使得车位这一公共资源得到较为充分的利用,而智能高效的停车场管理系统也显得越来越重要。
因此,本课程旨在为学生提供真实的图形图像软件开发经验和环境,要求他们理解和掌握软件开发过程中的各个环节,包括需求分析、系统设计、编码开发、测试和文档编写等。
二、实践内容
2.1 实践过程
- 前期工作
图形图像综合开发工作的前期阶段,我完成了基于图像识别技术的停车场收费系统的部分数据库设计和整体框架的搭建。在数据库设计方面,考虑了停车场收费系统的需求,使用PowerDesigner工具进行了详细的建模设计。通过合理的表结构和关系,确保了数据的一致性和完整性。这样的设计能够有效地支持系统的各项功能,提高系统的性能和可靠性。
同时,通过Cmake编译Opencv适用于QT开发平台,搭建车牌识别程序的框架,查找可用与字符匹配识别的算法,以及学习车牌识别从图像预处理、车牌区域定位、车牌区域分割、字符分割、字符识别的全过程。
此外,在系统的前端工程中,我使用Vue框架进行搭建,同时使用Maven工程搭建基于Spring Boot的后端工程。利用Spring Boot的优势,实现了快速的项目配置和依赖管理。通过Springboot+Vue的工程实现前后端的分离,可以提高系统的整体开发效率。
- 中期工作
在图形图像综合开发工作的中期阶段,我成功地完成了停车场收费系统的部分功能实现。包括车牌区域的定位、颜色判断、边缘检测、二次定位、分割、二值化、去除边缘、倾斜矫正以及字符分割和识别等。
针对车辆信息管理功能,我实现了车辆入库、车辆出库、车辆信息管理模块功能,包括选择车辆图片或视频截取视频帧,通过监听端口将图片信息传送给前一步写好的Qt车牌识别程序,识别车牌信息,识别成功后显示抬杆动画、车牌相关信息等,车辆入库、出库、车牌的图片都会显示在车辆信息管理模块。
为了实现车辆出库时的支付功能,与团队成员开发了与支付宝沙箱集成的支付功能。通过使用支付宝提供的开发工具和接口,实现了支付功能的核心逻辑和支付流程。这个过程中,熟悉了支付宝的支付接口和相关文档,并通过对沙箱环境的测试和调试,其中车牌信息,停车费用,停车时间等都会显示,保证了支付功能的准确性和稳定性。
- 后期工作
在成绩管理系统的后期阶段中,我参与了系统测试和系统功能的合并。测试了用户界面的交互体验、各项功能的正确性和稳定性等方面的测试工作。修复完善了部分系统中存在的问题,确保系统的正常运行和用户体验的优化。
其次,参与系统功能的合并工作。在开发过程中,各个功能模块由不同的同学分别开发和测试,而后期需要将这些功能模块进行整合,确保它们能够协同工作,提供完整的系统功能。我将各个模块进行整合,并进行必要的调试和测试,以确保系统在合并后的运行中不会出现冲突或错误。
2.2 实践内容
基于图像识别的停车场管理系统是一种利用计算机视觉技术来自动识别和管理停车场车辆的系统。通过图像识别算法,可以监控停车场的车辆情况,并自动进行车辆的入场和出场记录。
该系统的主要目标是提高停车场的管理效率和安全性。通过图像识别技术,系统可以实时识别车牌号码,自动完成车辆的入场和出场记录,并生成相应的收费信息。同时,系统还可以通过车牌号码对车辆进行分类和统计,便于停车场管理者进行车辆流量统计和分析。
该系统侧重于图像识别算法和停车场管理的展示。通过搜集图像数据和训练模型,系统能够实现车牌号码的准确识别和车辆出入场记录的自动化管理。该系统可以提供车辆出入场的实时记录。
项目结构 |
环境 |
后端 |
|
前端 |
|
数据库和中间件 |
|
硬件环境和软件环境 |
|
2.2.3系统组成与功能
整个系统由四大部分组成,分为车辆管理、会员管理、计费管理、报表管理。
- 车辆管理:
- 车牌识别与车辆信息登记
- 出入库抬杆模拟动画
- 费用支付
- 车牌信息修改、导出excel等
- 会员管理:
- 会员查询
- 会员新增
- 会员删除
- 计费管理:
- 缴费标准设置(分四个时段)
- 会员优惠制度
- 车辆类型收费标准的增删改查
- 报表管理
- 年、季、月、周、天等停车数量、收费统计查询
- 报表打印
系统框图:
图1 系统框图
1.数据库设计
我参与了停车收费管理平台数据库的设计工作,设计了部分数据库表,数据库设计是系统架构中的一个关键环节,它涉及到如何组织和存储数据,以支持系统的功能和需求,由于该系统主要需要的是车牌号码、颜色、车辆图片、入库出库时间、收费等信息,所以设计如下数据库表
车辆信息表 表1
列名 |
数据类型 |
空/非空 |
约束条件 |
列描述 |
plateid |
Int |
Y |
主键 |
入库id |
licensenum |
varchar |
Y |
车牌号 |
|
Teasex |
varchar |
Y |
车牌颜色 |
|
Licenseimage |
varchar |
Y |
入库图片 |
|
licensetemp |
varchar |
Y |
车牌图片 |
|
licensego |
varchar |
N |
出库图片 |
|
createtime |
varchar |
Y |
入库时间 |
|
modifytime |
varchar |
N |
出库时间 |
|
state |
int |
Y |
状态 |
|
pay |
Long |
Y |
费用 |
|
deleted |
int |
Y |
删除标记 |
2.车牌识别程序开发
车牌识别程序包括以下几个方面:
- 为了能够准确定位到车牌区域,我根据粗定位寻找矩形区域,进一步判断车牌的颜色信息,以便后续处理和识别。
- 在细定位车牌边缘检测方面,使用边缘检测算法,识别车牌边缘并进行二次定位,以确保车牌区域的准确性。
- 针对已定位的车牌区域进行分割,将车牌区域与原始图像进行区分。
- 为了进一步处理车牌区域,将车牌区域进行二值化操作,将彩色图像转换为二值图像。去除边缘,消除二值化图像中的噪声和干扰。
- 对倾斜车牌二值化,使其水平化和对齐,以方便后续的字符分割和识别,
- 使用KNN最近邻分类算法训练数据集和识别字符。
3.支付模块开发
- 通过使用支付宝提供的开发工具和接口,实现了支付功能的核心逻辑和支付流程。
- 为实现车辆费用计算的模块提供接口,方便传输具体支付费用。
2.3 主要成果
1.使用KNN算法训练数据集
KNN算法主要用在了车牌分割后的字符识别阶段,通过字符样本在整个数据集样本中最相似的K个样本属于的类别来决定的,这个过程中需要不断了识别车牌区域然后将车牌分割成单个字符图片制作成数据集。
1-1 训练的字符数据集
2.车辆入库模块功能设计
车牌识别录入功能在整个停车场收费系统中扮演者重要的角色,其中这个模块提供了以下功能:从选取车辆原始图片或者选取包含车辆的视频,进行抓拍帧,点击车牌识别之后,QT车牌识别程序负责识别车牌颜色以及号码,识别成功后车辆成功入库,同时显示抬杆动画。
界面:
图2-1 车牌(蓝牌)照片识别录入功能界面
2-2 车牌(绿牌)照片识别录入功能界面
图2-2 车牌(黄牌)照片识别录入功能界面
图3 车牌视频识别录入功能界面
3.车辆出库模块设计
车辆出库是整个停车场收费系统的重点,其中这个模块提供了以下功能:对出库的车辆进行车牌识别,识别之后通过入库时间和出库时间之差,根据具体设置的计费标准进行收费,后显示支付二维码,支付成功之后同时显示抬杆动画。
界面:
图6 支付功能界面
图7 支付成功功能界面
4.停车管理功能模块设计
这一部分功能主要用来展示车辆进场,出场,以及车牌图片,收费情况等信息,供报表等功能使用。
图10 停车管理界面
三、总结
3.1 个人心得
3.2 其它意见
获取源码请私信,有偿