基于qt的车牌识别系统设计与实现毕业论文(编辑修改稿)内容摘要:
图像处理 和计算机视觉方面的很多通用算法。 OpenCV主要分为四大模块,如图 31 所示。 OpenCV的 CV模块包含基本的图像处理函数和高级的计算机视觉算法。 ML 是机器学习库,包含一些基于统计和聚类工具。 HighGUI 包含图像和视频输入 /输出的函数。 CXCore 包含 OpenCV 的一些基本数据结构和相关函数。 图 31 系统流程图 配置 OpenCV 的 Qt 开发环境 (1)安装好 Qtcreator、 OpenCV以及 CMaker(默认安装 C 盘); (2)将 C:\Qt\\Tools\MinGW\bin 加入系统的 Path 环境变量; (3)使用 CMaker 编译 OpenCV并生成 makefile 文件; (4)打开 cmd,进入目标路径( C: \OpenCV) , 输入 mingw32make 命令开始编译。 (5)拷贝 安装目录下的 build/include 目录 , MinGW 编译后的 bin 目录 以及 CMake 目标路径下, MinGW 编译后的 lib 目录 到同一目录,并将 bin 目录添加到系统环境变量 path 中; (6)打开 Qt Creator,新建一个空工程,然后添加一个 cpp 文件,任意命名 , 在 pro 文件中添加如下OpenCV的依赖文件 INCLUDEPATH+=C:\OpenCV\include\opencv\ C:\OpenCV\include\opencv2\ C:\OpenCV\include LIBS+= C:\OpenCV\lib\\ CV 图像处理和视觉算法 MLL 统计分类器 HighGUI GUI 图像和视频输入 /输出 CXCORE 基本结构算法, XML 支持,绘图函数 7 C:\OpenCV\lib\\ C:\OpenCV\lib\\ C:\OpenCV\lib\\ C:\OpenCV\lib\\ C:\OpenCV\lib\\ C:\OpenCV\lib\\ C:\OpenCV\lib\\ C:\OpenCV\lib\\ C:\OpenCV\lib\\ C:\OpenCV\lib\\ C:\OpenCV\lib\ 车牌识别系统的功能模块划分和实现 图片读取模块 读取用户选择含有车牌信息图片 (*.jpg *.bmp *.gif *.png) 的磁盘路径,根据路径载入图片,并将读取出来的图片提供给后续模块。 图片灰度化模块 通过获取像素 GBG,使用 cvCvtColor 函数 加权值法将图像进行灰度化处理,然后将绘制的灰度化图片用 cvSmooth 函数通过 高斯滤波( CV_GAUSSIAN)进行去噪,平滑处理。 并将绘制后的图片提供给后续模块。 图 32 图像原图 8 图 33 灰度化图片 图 34 平滑处理图片 图片二值化模块 使用 cvThreshold 函数的 Otsu 算法将原图分成前景,背景两个图像,通过衡量背景与前景的差别值,运用最大类间方差选取最佳阀值对图像进行二值化处理,并将绘制好图片传给下一模块。 9 图 35 二值化处理图片 车牌定位模块 首先对二值 化后的图像进行行扫描和列扫描,从而得到车牌区域。 接下来找出每行的非零像素值的个数统计出来存储在数组中,最后通过投影统计出所有的图像像素,并保存投影数值和最大的。 对保存的数值判断,如果满足要求这样就找出了车牌上水平线,同样的方法找出下水平线。 车牌左右边界寻找方法跟上段叙述的上下水平线方法相似,变成纵向扫描统计像素个数,然后进一步确定。 在此过程中统计列非零像素并找出最大连续统计,这值是车牌左边界,区域右边界同理可得。 然后使用 OpenCV的功能函数在此区域设置感兴趣的块,最后截取出车牌区域。 图 36 车牌 定位图片 10 字符分割模块 首先要对车牌字符进行定位,因为在车牌里第二个字符和第三个字符中间会有一个白色的小点,在切割过程中会对识别造成干扰,所以首先要对车牌进行第一次垂直投影,定位在第二个字符和第三个字符中间,确定第二个字符的边界位置和第三个字符的起点位置,这样就可以将车牌分成两个部分,然后再次进行垂直投影通过阀值来确定分割的大小和位置。 分割完成后,再对分割的图片进行角点处理,点角集中了图像上的重要形状信息,能够是提高图片特征和边缘化程度,从而提高字符识别的精度和准确度,处理完成后绘制好分割 的图像,传给下一模块。 图 37 车牌分割图片 字符识别模块 本系统使用 KNN 算法实现字符识别, KNN 算法的核心思想是如果一个样本在特征空间中的 k个最相邻的样本中的大多数属于某一个类别,则该样本也属于这个类别,并具有这个类别上样本的特性。 KNN 算法实现步骤: ( 1) 初始化距离为最大值; ( 2) 计算位置样本和每个训练样本的距离 dist; ( 3) 得到目前 K 个最临近样本中的最大距离 maxdist; ( 4) 如果 dist 小于 maxdist,则将该训练样本作为 K 最近邻样本; ( 5) 重复上述 3 个步骤,直到未知样本和所有训练样本的距离都 算完; ( 6) 统计 K 个最邻近样本中每个类别出现的次数; ( 7) 选择出频率最大的类别作为未知样本的类别。 4 系统测试 ( 1) 训练样本 图 41 训练样本 11 图 42 训练样本 图 43 训练样本 ( 2)开启界面 图 44 开启界面 12 ( 3)程序主界面 图 45 程序主界面 ( 4)图片选取 图 46 图片选取 13 ( 5)图像识别 图 47 图像识别 5 系统结果分析与展望 通过几个月的学习与实践,顺利完成了 毕业设计,在刚开始接触到这个题目的时候脑海中并没有具体思路,车牌识别系统涉及到了非常多的图像方面有关的专业知识,这些都是我在之前并未接触过的,很多专业知识我必须从头开始一步步的去了解和深入,我通过上网 、 图书馆查阅资料以及吴老师的指导之下,分析和研究,解决了很多难题。 车牌识别系统是一个实际的工程系统,要求实时性高和一定的准确率,由于实际生活中采集到的图像受到到大量随机的环境干扰,以及拍摄角度的影响使得车牌区域会有各样的形状以及色差的无规则变化,同时每张图片的质量以及清晰度也不一样,给车牌识别带来了一定难度, 所以要求系统能够在这样的条件下也能够准确识别,设计的过程中使用了二值化,边缘检测,中值滤波等图像处理方法,而每一种处理方法又可以用不同的算法去实现,算法的选择对最后的识别结果是至关重要的,如对图像进行二值化,算法非常的多,有双峰法, P 参数法,迭代法和 OTSU 法等,所以就要对不同的算法进行测试,选择出最适合进行车牌识别的算法,这样就能提高识别的准确度,同时本系统最后一个字符识别的模块是一个难点,试用了多种方法准确率都非常的低,最后通过上网查阅资料,选择了 KNN 邻近算法进行字符识别,提高了识别的准确率及精度。 系统完成后因为各方面原因,所以系统还并不完善,还有待于从以下几个方面进一步去完善和提高。 (1)对于倾斜度较高的车牌校正有待进一步去研究。 (2)在识别过程中可以综合多种算法综合对图像进行处理,提高识别的抗干扰能力和识别的准确率。 (3)对图片的质量,车牌位置要求进一步降低,提高应用面。 14 参考文献 [1](加)布兰切特,(英)萨默菲尔德著,闫锋欣译,《 C++ GUI Qt 4 编程(第二版)》,电子工 业出版社, 202051 [2] 李彬 ,《 Linux Qt GUI 开发详解 基于 Nokia Qt SDK》,北京航空 航天大学出版社, 202011 [3] 韩少云,奚海蛟,谌利,《基于嵌入式 Linux的 Qt 图形程序实战开发》,北京航空航天大学出 版社, 2020101 [4] (美)李普曼,(美)拉乔伊 ,(美)默 著,王刚,杨巨峰 译,《 C++ Primer 中文版(第 5 版)》, 电子工业出版社, 202091 [5] 霍亚飞,《 Qt Creator 快速入门。基于qt的车牌识别系统设计与实现毕业论文(编辑修改稿)
相关推荐
可靠性、成本、体积、功耗等指标的严格要求的专用计算机系统。 另一种是, IEEE(国际电气和电子工业协会)的定义:嵌入式系统是用于控制、监视或者辅助操作机器的设备和装置。 两种定义分别是在不同方面来阐述嵌入式系统的特点,可以将嵌入式系统简单的理解为一种软件和硬件的综合体,将电子、计算机技术与具体应用相结合后的产物,是一种体型小巧、功能强大的集成系统。 嵌入式系统一般指非 PC 系统,
系统峰值的影响越来越大,使之成为在负荷预测中必须考虑的重要因素。 商业负荷也同样具有季节性变化和日变化的特点,这种变化 也是由于商业部门越来越广泛地采用空调、电风扇等敏感于气候的电器,以及商业营业性质所致。 相对来说,工业负荷占负荷比例较大,且一般可视作是受气候影响较小的基础负荷,但也不能说一点也不受气候的影响。 比如高温季节,工业负荷也含有降温和防暑耗电。 一方面由于工业负荷本身负荷很大
的普及应用,计算机技术的不断发展,酒店管理系统的发展到了一个新的时期,新的系统平台、新的系统 点及发展方向不断涌现,主要体现在系统基本转到客户机 /服务器模式下的Windows 版,功能更加细致完善,系统更加稳定可靠。 虽然酒店管理系统的应用至今己东北大学东软信息学院毕业设计(论文) 第 1章 绪论 2 有 20 多年的历史,但起步发展较晚,只是一些浅层次应用,大多数还停留于七拼八凑的 MIS
串行通信数据通常是在二个站 (点对点 )之间进行传送,按照数据流的方向可 分成三种传送模式 :单工、半双工、全双工。 单工形式的数据仅能沿着单一的方向传播。 半双工形式使用同一根传输线,即 可发送数据又可接收数据,但不能同时发送和接收,在任何时刻只能由其中的一方发送数据,另一方接收数据。 全双工形式的数据分别由两根在两个不同的站点同时发送和接收的传输线进行传送,通行双方都
X 系统 , 大大 节省 了 许多的 不必要的 系统开销 ,需要在 GUI 展示的 图像 , 直接写 入 了 framebuffer, 节省了系统资源,大大 加快 了 显示速度。 这 是 Qt/E 的最大优势。 两者的体系结构差别, 如图 21 所示: 图 21 Qt/E 和 Qt/X11 体系架构对比 因此, Qt/E 具有 服务端 层,这一层 主要 负责监听系统 的 事件, 如: 主要是
大批量操作 ( 4)覆盖面广 ( 5)搜索效率高 如何开展自动化测试 在软件测试的阶段,自动化测试应该被当作一个项目来开展。 首先要确定所开发的软件项目采用自动化测试是否适用。 短期的或者一次性的项目不宜采用,因为这反而增加开发周期和成本。 同样,在一个非常紧迫 的项目中也是不合适的,因为需要测试人员开发编写测试脚本,并需要开发人员的配合使得整个进程更加紧张仓促,适得其反。 安徽新华学院