• 大小: 6.69MB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2023-09-24
  • 语言: 其他
  • 标签: opencv  车牌识别  

资源简介

基于SVM与ANN的车牌识别,结合opencv库使用。

资源截图

代码片段和文件信息

#include “DetectRegions.h“

void DetectRegions::setFilename(string s)
{
filename = s;
}

DetectRegions::DetectRegions()
{
showSteps = false;
saveRegions = false;
}

/*对检测到的区域做一些基本的验证,这些验证基于面积与宽高比。
车牌区域:有40%的误差范围内,其宽高比为520/110 = 4.727272 */
bool DetectRegions::verifySizes (RotatedRect candidate)
{
float error = 0.4;
//Spain car plate size: 52*11 aspect 47272
const float aspect = 4.7272;
//Set a min and max area All other patches are discared
int min = 15 * aspect * 15; 
int max = 125 *aspect * 125;
//Get only patches that match to a respect ratio.
float rmin = aspect - aspect * error;
float rmax = aspect + aspect* error;

int area =candidate.size.height * candidate.size.width;

float r = (float) candidate.size.width / (float) candidate.size.height;
if(r  < 1)
r = 1/r;
if ((area < min || area > max) || (r < rmin || r > rmax))
return false;
else
return true;
}


Mat DetectRegions::histeq(Mat in)  //直方图均衡
{
Mat out (in.size() in.type());
if (in.channels() == 3)
{
Mat hsv;
vector < Mat > HsvSplit;
cvtColor(in hsv CV_BGR2HSV);
split(hsvHsvSplit);//通道分离
equalizeHist(HsvSplit[2] HsvSplit[2]);
merge(HsvSplit hsv);
cvtColor(hsv out CV_HSV2BGR);
}
else if(in.channels() == 1)
equalizeHist(in out);
return out;
}

vector  DetectRegions::segment(Mat input)
{
vector  output;

Mat img_gray;
cvtColor(input img_gray CV_BGR2GRAY);
blur(img_gray img_gray Size(55));

Mat img_sobel;
Sobel(img_gray img_sobel CV_8U 1 0 3 1 0 BORDER_DEFAULT);
if(showSteps)
imshow(“Sobel“img_sobel);

Mat img_threshold;
threshold(img_sobel img_threshold 0 255 CV_THRESH_OTSU + CV_THRESH_BINARY);
if(showSteps)
imshow(“Thershold“img_threshold);

Mat element = getStructuringElement(MORPH_RECT Size(173));
morphologyEx(img_thresholdimg_threshold CV_MOP_CLOSE element);
if(showSteps)
imshow(“Close“ img_threshold);

vector < vector < Point> > contours;
findContours(img_threshold contours CV_RETR_EXTERNAL CV_CHAIN_APPROX_NONE);
vector < vector < Point > > :: iterator itc = contours.begin();
vector < RotatedRect > rects;

while (itc != contours.end())
{
RotatedRect mr = minAreaRect(Mat (*itc));
if( !verifySizes(mr))
itc = contours.erase(itc);
else
{
++itc;
rects.push_back(mr);
}

}

Mat result;
input.copyTo(result);
drawContours(result contours -1 Scalar(255 0 0) 1);

//For better rect cropping for each posible box
//Make floodfill algorithm because the plate has white background
//And then we can retrieve more clearly the contour box
for (int i = 0; i < rects.size(); i++)
{
circle( result rects[i].center 3 Scalar(0 255 0) -1);
float minSize = (rects[i].size.width < rects[i].size.height)? rects[i].size.width : rects[i].size.height;
minSize = minSize - minSize * 0.5;

//initialize rand and get 5 points around center for flo

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件     301056  2015-04-30 09:30  testnouse\Debug\testnouse.exe

     文件    2961740  2015-04-30 09:30  testnouse\Debug\testnouse.ilk

     文件    3599360  2015-04-30 09:30  testnouse\Debug\testnouse.pdb

     文件     196236  2014-06-02 08:20  testnouse\testnouse\2715DTZ.jpg

     文件       2390  2015-04-30 09:30  testnouse\testnouse\Debug\cl.command.1.tlog

     文件      90756  2015-04-30 09:30  testnouse\testnouse\Debug\CL.read.1.tlog

     文件       3490  2015-04-30 09:30  testnouse\testnouse\Debug\CL.write.1.tlog

     文件    1039376  2015-04-28 20:28  testnouse\testnouse\Debug\DetectRegions.obj

     文件          2  2015-04-30 09:30  testnouse\testnouse\Debug\link.10940.read.1.tlog

     文件          2  2015-04-30 09:30  testnouse\testnouse\Debug\link.10940.write.1.tlog

     文件          2  2015-04-30 09:30  testnouse\testnouse\Debug\link.11052.read.1.tlog

     文件          2  2015-04-30 09:30  testnouse\testnouse\Debug\link.11052.write.1.tlog

     文件          2  2015-04-30 09:30  testnouse\testnouse\Debug\link.17704.read.1.tlog

     文件          2  2015-04-30 09:30  testnouse\testnouse\Debug\link.17704.write.1.tlog

     文件          2  2015-04-30 09:30  testnouse\testnouse\Debug\link.18368.read.1.tlog

     文件          2  2015-04-30 09:30  testnouse\testnouse\Debug\link.18368.write.1.tlog

     文件          2  2015-04-30 09:30  testnouse\testnouse\Debug\link.19628.read.1.tlog

     文件          2  2015-04-30 09:30  testnouse\testnouse\Debug\link.19628.write.1.tlog

     文件          2  2015-04-30 09:30  testnouse\testnouse\Debug\link.2468.read.1.tlog

     文件          2  2015-04-30 09:30  testnouse\testnouse\Debug\link.2468.write.1.tlog

     文件          2  2015-04-30 09:30  testnouse\testnouse\Debug\link.3380.read.1.tlog

     文件          2  2015-04-30 09:30  testnouse\testnouse\Debug\link.3380.write.1.tlog

     文件          2  2015-04-30 09:30  testnouse\testnouse\Debug\link.6568.read.1.tlog

     文件          2  2015-04-30 09:30  testnouse\testnouse\Debug\link.6568.write.1.tlog

     文件          2  2015-04-30 09:30  testnouse\testnouse\Debug\link.6820.read.1.tlog

     文件          2  2015-04-30 09:30  testnouse\testnouse\Debug\link.6820.write.1.tlog

     文件          2  2015-04-30 09:30  testnouse\testnouse\Debug\link.7724.read.1.tlog

     文件          2  2015-04-30 09:30  testnouse\testnouse\Debug\link.7724.write.1.tlog

     文件          2  2015-04-30 09:30  testnouse\testnouse\Debug\link.8096.read.1.tlog

     文件          2  2015-04-30 09:30  testnouse\testnouse\Debug\link.8096.write.1.tlog

............此处省略32个文件信息

评论

共有 条评论