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.
pgk9fzonx/PlateDetect & PlateJudege &...

18 lines
3.0 KiB

This file contains ambiguous Unicode characters!

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)函数用于切换生活模式与工业模式只有一个布尔型的参数islifemodesetLifemode函数没有返回值根据参数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 类的函数进行车牌检测识别,先车牌定位然后进行车牌判断,根据操作的结果返回不同的数值。