资源简介
基于opencv的车牌识别源码,亲测可用,包括提前提取车牌区域,字符分割以及字符识别整个车牌识别过程。在提取车牌区域时用过SVM支持向量机来识别,最后的车牌字符识别通过神经网络识别。将两种机器学习算法都用到了。不仅仅用于学习,我在车牌识别项目中也是基于该源码工作的。
代码片段和文件信息
#include “ImageRecognition.h“
void ImageRecognition::setFilename(string name) {
filename = name;
}
ImageRecognition::ImageRecognition(){
showSteps = false;
saveRecognition = false;
}
bool ImageRecognition::verifySizes(RotatedRect ROI){
// 以下设置车牌默认参数,用于识别矩形区域内是否为目标车牌
float error = 0.4;
// 西班牙车牌宽高比: 520 / 110 = 4.7272
float aspect = 4.7272;
// 设定区域面积的最小/最大尺寸,不在此范围内的不被视为车牌
int min = 15 * aspect * 15; // 15个像素
int max = 125 * aspect * 125; // 125个像素
float rmin = aspect - aspect*error;
float rmax = aspect + aspect*error;
int area = ROI.size.height * ROI.size.width;
float r = (float)ROI.size.width / (float)ROI.size.height;
if (r<1)
r = (float)ROI.size.height / (float)ROI.size.width;
// 判断是否符合以上参数
if ((area < min || area > max) || (r < rmin || r > rmax))
return false;
else
return true;
}
// 对图像进行直方图均衡处理,调整亮度
Mat ImageRecognition::histeq(Mat ima)
{
Mat imt(ima.size() ima.type());
// 若输入图像为彩色,需要在HSV空间中做直方图均衡处理
// 再转换回RGB格式
if (ima.channels() == 3)
{
Mat hsv;
vector hsvSplit;
cvtColor(ima hsv CV_BGR2HSV);
split(hsv hsvSplit);
equalizeHist(hsvSplit[2] hsvSplit[2]);
merge(hsvSplit hsv);
cvtColor(hsv imt CV_HSV2BGR);
}
// 若输入图像为灰度图,直接做直方图均衡处理
else if (ima.channels() == 1){
equalizeHist(ima imt);
}
return imt;
}
// 图像分割函数
vector ImageRecognition::segment(Mat input)
{
vector output;
//n图像转换为灰度图
Mat grayImage;
cvtColor(input grayImage CV_BGR2GRAY);
blur(grayImage grayImage Size(5 5)); // 对图像进行滤波,去除噪声
// 通常车牌拥有显著的边缘特征,这里使用sobel算子检测边缘
Mat sobelImage;
Sobel(grayImage // 输入图像
sobelImage // 输出图像
CV_8U //输出图像的深度
1 // x方向上的差分阶数
0 // y方向上的差分阶数
3 // 扩展Sobel核的大小,必须是135或7
1 // 计算导数值时可选的缩放因子,默认值是1
0 // 表示在结果存入目标图之前可选的delta值,默认值为0
BORDER_DEFAULT); // 边界模式,默认值为BORDER_DEFAULT
if (showSteps)
{
imshow(“Sobel“ sobelImage);
}
// 阈值分割得到二值图像,所采用的阈值由Otsu算法得到
Mat thresholdImage;
// 输入一幅8位图像,自动得到优化的阈值
threshold(sobelImage thresholdImage 0 255 CV_THRESH_OTSU + CV_THRESH_BINARY);
if (showSteps)
{
imshow(“Threshold Image“ thresholdImage);
}
// 形态学之闭运算
// 定义一个结构元素structuringElement,维度为17*3
Mat structuringElement = getStructuringElement(MORPH_RECT Size(17 3));
// 使用morphologyEx函数得到包含车牌的区域(但不包含车牌号)
morphologyEx(thresholdImage thresholdImage CV_MOP_CLOSE structuringElement);
if (showSteps)
{
imshow(“Close“ thresholdImage);
}
// 找到可能的车牌的轮廓
vector< vector< Point> > contours;
findContours(thresholdImage
contours // 检测的轮廓数组,每一个轮廓用一个point类型的vector表示
CV_RETR_EXTERNAL // 表示只检测外轮廓
CV_CHAIN_APPROX_NONE); // 轮廓的近似办法,这里存储所有的轮廓点
// 对每个轮廓检测和提取最小区域的有界矩形区域
vector >::iterator itc = contours.begin();
vector rects;
// 若没有达到设定的宽高比要求,移去该区域
while (itc != contours.end())
{
RotatedRect ROI = minAreaRect(Mat(*itc));
if (!verifySizes(ROI)){
itc = contours.erase(itc);
}
else{
++itc;
rects.push_back(ROI);
}
}
// 在白色的图上画
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2017-06-01 14:56 亲测-车牌识别(SVM+神经网络)\
目录 0 2017-08-29 15:44 亲测-车牌识别(SVM+神经网络)\NumberPlateRecognition\
文件 15851785 2017-05-26 20:10 亲测-车牌识别(SVM+神经网络)\NumberPlateRecognition.zip
目录 0 2017-08-01 17:12 亲测-车牌识别(SVM+神经网络)\NumberPlateRecognition\Debug\
文件 393261 2012-12-29 04:28 亲测-车牌识别(SVM+神经网络)\NumberPlateRecognition\Debug\3154FFY.JPG
文件 386667 2012-12-29 04:28 亲测-车牌识别(SVM+神经网络)\NumberPlateRecognition\Debug\DSC_0566.jpg
文件 292352 2017-08-01 17:12 亲测-车牌识别(SVM+神经网络)\NumberPlateRecognition\Debug\NumberPlateRecognition.exe
文件 1362640 2017-08-01 17:12 亲测-车牌识别(SVM+神经网络)\NumberPlateRecognition\Debug\NumberPlateRecognition.ilk
文件 3951616 2017-08-01 17:12 亲测-车牌识别(SVM+神经网络)\NumberPlateRecognition\Debug\NumberPlateRecognition.pdb
文件 3392688 2012-12-29 04:28 亲测-车牌识别(SVM+神经网络)\NumberPlateRecognition\Debug\OCR.xm
文件 684 2015-05-29 17:27 亲测-车牌识别(SVM+神经网络)\NumberPlateRecognition\Debug\PlateNumber0.jpg
文件 709 2015-05-29 17:27 亲测-车牌识别(SVM+神经网络)\NumberPlateRecognition\Debug\PlateNumber1.jpg
文件 521 2015-05-29 17:27 亲测-车牌识别(SVM+神经网络)\NumberPlateRecognition\Debug\PlateNumber2.jpg
文件 701 2015-05-29 17:27 亲测-车牌识别(SVM+神经网络)\NumberPlateRecognition\Debug\PlateNumber3.jpg
文件 613 2015-05-29 17:27 亲测-车牌识别(SVM+神经网络)\NumberPlateRecognition\Debug\PlateNumber4.jpg
文件 626 2015-05-29 17:27 亲测-车牌识别(SVM+神经网络)\NumberPlateRecognition\Debug\PlateNumber5.jpg
文件 633 2015-05-29 17:27 亲测-车牌识别(SVM+神经网络)\NumberPlateRecognition\Debug\PlateNumber6.jpg
文件 2561352 2012-12-29 04:28 亲测-车牌识别(SVM+神经网络)\NumberPlateRecognition\Debug\SVM.xm
目录 0 2015-05-29 17:11 亲测-车牌识别(SVM+神经网络)\NumberPlateRecognition\Debug\test\
文件 196236 2012-12-29 04:28 亲测-车牌识别(SVM+神经网络)\NumberPlateRecognition\Debug\test\2715DTZ.jpg
文件 293009 2012-12-29 04:28 亲测-车牌识别(SVM+神经网络)\NumberPlateRecognition\Debug\test\3028BYS.JPG
文件 393261 2012-12-29 04:28 亲测-车牌识别(SVM+神经网络)\NumberPlateRecognition\Debug\test\3154FFY.JPG
文件 319706 2012-12-29 04:28 亲测-车牌识别(SVM+神经网络)\NumberPlateRecognition\Debug\test\3266CNT.JPG
文件 281617 2012-12-29 04:28 亲测-车牌识别(SVM+神经网络)\NumberPlateRecognition\Debug\test\3732FWW.JPG
文件 373921 2012-12-29 04:28 亲测-车牌识别(SVM+神经网络)\NumberPlateRecognition\Debug\test\5445BSX.JPG
文件 328567 2012-12-29 04:28 亲测-车牌识别(SVM+神经网络)\NumberPlateRecognition\Debug\test\7215BGN.JPG
文件 267098 2012-12-29 04:28 亲测-车牌识别(SVM+神经网络)\NumberPlateRecognition\Debug\test\8995CCN.JPG
文件 514614 2012-12-29 04:28 亲测-车牌识别(SVM+神经网络)\NumberPlateRecognition\Debug\test\9588DWV.jpg
文件 356947 2012-12-29 04:28 亲测-车牌识别(SVM+神经网络)\NumberPlateRecognition\Debug\test\9773BNB.jpg
文件 365670 2012-12-29 04:28 亲测-车牌识别(SVM+神经网络)\NumberPlateRecognition\Debug\test\DSC_0562.jpg
文件 386667 2012-12-29 04:28 亲测-车牌识别(SVM+神经网络)\NumberPlateRecognition\Debug\test\DSC_0566.jpg
............此处省略75个文件信息
- 上一篇:湖南大学远程抄表管理系统毕业设计
- 下一篇:latex-xelatex 中文字体庫
相关资源
- ippicv_2017u3_lnx_intel64_20170822.tgz包
- opencv4.1_x86.rar
- opencv for qt5.8
- OpenCV两种方法显示中文
- opencv2.2.0版本
- 最经典的开源车牌识别代码 OPENCV
- 《学习OpenCV(中文版)》-于仕琪
- opencv打开图片并显示在Qt界面上
- opencv1.0.zip
- OpenCV3+Qt5视频处理GUI程序
- Opencv2.0.0
- HOG+SVM的行人图片和视频检测码源及所
- 识别出表盘的指针刻度-opencv
- opencv4.0.1+contrib+vs2017编译x64x86完全版本
- opencv论文合集2
- opencv3编译需要的opencv_ffmpeg_64.dll
- OpenCVTest
- SVM及SMO重要外文文献书籍
- 编译好的OpenCV3.4.2+Qt5.9+Contrib版
- 基于OPENCV的运动估计-块匹配,根据锚
- 基于svm的光谱分类
- opencv 图片处理,分割字符
- 卷积神经网络车牌识别164048
- opencv4.1+contrib vs2017编译 64位版
- 帧差法实现前景背景分离
- opencv分封装函数到dll
- opencv3.2 + contrib3.2完整编译
- vs2017+OpenCV3.43中值滤波函数使用例程
- opencv3.4.1 32位 Debug版本 x86VS2017编译
- 基于opencv的数字识别
评论
共有 条评论