You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.
PlateLocate 类:
这个类主要是用于实现车牌定位的功能,还兼顾一些对车牌图片进行处理的功能。如生活模式与工业模式切换,定位车牌图像,车牌图像旋转微调等。
setLifemode(boolean islifemode)函数: 用于切换生活模式与工业模式, 只有一个布尔型的参数islifemode, setLifemode( ) 函数没有返回值, 根据参数islifemode的值来调整图片处理时的参数, 如果为真, 则设置各项参数为定位生活场景照片( 如百度图片) 的参数, 否则恢复默认值。
plateLocate(Mat src)函数: 用于定位车牌图像, 仅有一个Mat类型的参数src, 函数返回值是Vector<Mat>( Mat 类型的一个数组) 。vector 是一种数据结构,确切的说是一个类.它相当于一个动态的数组,当程序员无法知道自己需要的数组的规模多大时,用其来解决问题可以达到最大节约空间的目的。vector存入Mat的矩阵是按列存储, Mat的类型将隐式转化为vector的类型。
函数对读取的图片进行一系列的处理,对多个车牌图片处理的结果仅会保留最后一个车牌图片的临时图片。图片处理流程:高斯模糊 -> 图像进行灰度化 -> 对图像进行Sobel 运算,得到图像的一阶水平方向导数 -> 对图像进行二值化 -> 使用闭操作,对图像进行闭操作以后,车牌区域被连接成一个矩形装的区域 -> 调用findContours( ) 求出图中所有的轮廓 -> 对轮廓求最小外接矩形,然后验证,不满足条件的淘汰 -> 旋转,将某些倾斜的车牌调整正 -> 如果抓取的方块旋转超过m_angle角度, 则不是车牌, 放弃处理 -> 最后返回处理好的车牌图片。
verifySizes(RotatedRect mr)函数: 用纵横比对minAreaRect获得的图片进行判断是不是最小外接矩形, 函数是布尔类型的, 返回true或者false。
showResultMat( ) 函数: 对图片进行旋转处理, 并显示最终生成的车牌图像, 用于判断是否成功进行了旋转, 最后返回处理后的图片。
PlateJudge 类:
该类用于车牌判断, 用SVM方法识别车牌。
loadSVM(String path)函数: 用于加载模型文件xml, 字符串参数传入文件路径。
PlateJudge()函数: 调用loadSVM( ) 函数进行加载模型文件xml的操作。
plateJudge(final Mat inMat)函数: 用于对单幅图像进行SVM判断。调用getFeatures回调函数, 用于从车牌的image生成svm的训练特征features, 然后和样本库对比, 正样本返回0, 负样本返回1。
plateJudge(Vector<Mat> inVec, Vector<Mat> resultVec)函数: 用于对多幅图像进行SVM判断。
PlateDetect类:
该类用于车牌检测识别,分两个步骤: 1、车牌定位 2、车牌判断, 整合PlateLocate 类和PlateJudge 类两个类进行识别操作。
plateDetect(final Mat src, Vector<Mat> resultVec)函数: 通过调用PlateLocate 类和PlateJudge 类的函数进行车牌检测识别,先车牌定位然后进行车牌判断,根据操作的结果返回不同的数值。