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.
|
|
|
|
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 类的函数进行车牌检测识别,先车牌定位然后进行车牌判断,根据操作的结果返回不同的数值。
|