• 大小: 15.64MB
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2023-07-07
  • 语言: C/C++
  • 标签: opencvSVM  

资源简介

基于SVM与人工神经网络的车牌识别算法,使用了OpenCV的图像处理函数,在VS2013平台上实现

资源截图

代码片段和文件信息

#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);
}
}

// 在白色的图上画出蓝色的轮廓
cv::Mat re

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2015-05-21 00:59  NumberPlateRecognition\
     目录           0  2015-05-20 20:46  NumberPlateRecognition\Debug\
     文件      393261  2012-12-29 04:28  NumberPlateRecognition\Debug\3154FFY.JPG
     文件      514614  2012-12-29 04:28  NumberPlateRecognition\Debug\9588DWV.jpg
     文件      290304  2015-05-21 00:02  NumberPlateRecognition\Debug\NumberPlateRecognition.exe
     文件     3579744  2015-05-21 00:02  NumberPlateRecognition\Debug\NumberPlateRecognition.ilk
     文件     5009408  2015-05-21 00:02  NumberPlateRecognition\Debug\NumberPlateRecognition.pdb
     文件     3392688  2012-12-29 04:28  NumberPlateRecognition\Debug\OCR.xml
     文件     2561352  2012-12-29 04:28  NumberPlateRecognition\Debug\SVM.xml
     目录           0  2015-05-20 20:44  NumberPlateRecognition\Debug\test\
     文件       57741  2015-05-20 20:38  NumberPlateRecognition\Debug\test\0657BLR.jpg
     文件      196236  2012-12-29 04:28  NumberPlateRecognition\Debug\test\2715DTZ.jpg
     文件      293009  2012-12-29 04:28  NumberPlateRecognition\Debug\test\3028BYS.JPG
     文件       53381  2015-05-20 20:44  NumberPlateRecognition\Debug\test\3056BMT.jpg
     文件      393261  2012-12-29 04:28  NumberPlateRecognition\Debug\test\3154FFY.JPG
     文件      319706  2012-12-29 04:28  NumberPlateRecognition\Debug\test\3266CNT.JPG
     文件      281617  2012-12-29 04:28  NumberPlateRecognition\Debug\test\3732FWW.JPG
     文件       14959  2015-05-20 20:42  NumberPlateRecognition\Debug\test\3786GHJ.jpg
     文件      373921  2012-12-29 04:28  NumberPlateRecognition\Debug\test\5445BSX.JPG
     文件      328567  2012-12-29 04:28  NumberPlateRecognition\Debug\test\7215BGN.JPG
     文件      267098  2012-12-29 04:28  NumberPlateRecognition\Debug\test\8995CCN.JPG
     文件      514614  2012-12-29 04:28  NumberPlateRecognition\Debug\test\9588DWV.jpg
     文件      356947  2012-12-29 04:28  NumberPlateRecognition\Debug\test\9773BNB.jpg
     文件      365670  2012-12-29 04:28  NumberPlateRecognition\Debug\test\DSC_0562.jpg
     文件      386667  2012-12-29 04:28  NumberPlateRecognition\Debug\test\DSC_0566.jpg
     目录           0  2015-05-21 00:50  NumberPlateRecognition\NumberPlateRecognition\
     文件    17891328  2015-05-21 00:59  NumberPlateRecognition\NumberPlateRecognition.sdf
     文件        1012  2015-05-20 19:28  NumberPlateRecognition\NumberPlateRecognition.sln
     文件       33280  2015-05-21 00:59  NumberPlateRecognition\NumberPlateRecognition.v12.suo
     目录           0  2015-05-21 00:02  NumberPlateRecognition\NumberPlateRecognition\Debug\
     文件      936807  2015-05-21 00:02  NumberPlateRecognition\NumberPlateRecognition\Debug\ImageRecognition.obj
............此处省略25个文件信息

评论

共有 条评论

相关资源