资源简介

vs2015+opencv3.1实现车牌的识别,其中用到了图像分割技术,有比较好的学习参考价值,对opencv新手很有帮助

资源截图

代码片段和文件信息

/**********************************************************************************\
车牌识别总思路
一:载入图像,初步处理,并二值化;                //二值化
二:寻找含有车牌有效信息的区域                    //定位
1:找上行位置
2;找下行位置
3:找左列位置
4:找右列位置
三:提取ROI并归一化处理                           //ROI
四:分割字符并画白线显示分割区域                  //分割
五:定位每个字符的区域并独立显示                  //显示
\***************************************************************************************/
#include   
#include   
#include   
#include   
using namespace std;
#define T 27                            //判断一行是不是车牌有效信息的阈值  
#define T1 2                            //判断一列是不是车牌有效信息的阈值  
#define S(imagexy) ((uchar*)(image->imageData + image->widthStep*(y)))[(x)]   
//S(imagexy)指该图像(x,y)像素点的像素值[(x)]是数组,类似于a[i]  
IplImage *src;
IplImage *pImg8u = NULL;             //灰度图  
IplImage *pImg8uSmooth = NULL;       //高斯滤波后的图  
IplImage *pImgCanny = NULL;          //二值化的图    
IplImage *pImg8uROI = NULL;         //感兴趣的图片  
IplImage *pImgResize = NULL;        //归一化的灰度图  

IplImage *pImgCharOne = NULL;
IplImage *pImgCharTwo = NULL;
IplImage *pImgCharThree = NULL;
IplImage *pImgCharFour = NULL;
IplImage *pImgCharFive = NULL;
IplImage *pImgCharSix = NULL;
IplImage *pImgCharSeven = NULL;


int i j;
int row_start row_end;             //用来记录车牌开始,结束行  
int col_start col_end;             //用来记录车牌开始,结束列  
int row[120];                      //row[]存放含有有效车牌信息的第j行,把所有有效行放一个数组里面,统一管理,有利于判断。  
int col[340];                      //存放每个字符双边界(列)的位置  
int k = 0;                           //含有有效车牌信息的行数  
int nCharWidth = 45;                 //每个字符的列,也就是宽度  
int nSpace = 12;                     //字符之间的间隙  
int nWidth = 409;                    //(40990)分别为感兴趣图像的宽度与高度  
int nHeight = 90;

void find_UpAndDown_row(IplImage *src_son_row);
//定义一个子函数,找到图片中含有车牌有效信息的最上行和最下行  
void find_LeftAndRight_col(IplImage *src_son_col);
//定义一个子函数,找到图片中含有车牌有效信息的最左列和最右列  
void find_ROI(IplImage *before_ROI IplImage *after_ROI);
//定义一个子函数find_ROI,找到图片中只含有目标区域的部分  
void cut_and_drawLine(IplImage *befour_cut_image);
//定义一个子函数cut_and_drawLine,对含有车牌有效信息的图片分割出字符,并画出分割线  
void show_every_char(IplImage *showChar);
//定义一个子函数show_every_char,显示出所有分割出来的字符  
void main()
{
src = cvLoadImage(“D:/车牌.jpg“ -1);
pImg8uSmooth = cvCreateImage(cvGetSize(src) IPL_DEPTH_8U 1);
pImg8u = cvCreateImage(cvGetSize(src) IPL_DEPTH_8U 1);
pImgCanny = cvCreateImage(cvGetSize(src) IPL_DEPTH_8U 1);
cvCvtColor(src pImg8u CV_RGB2GRAY);                //灰度化  
cvSmooth(pImg8u pImg8uSmooth CV_GAUSSIAN 3 0 0);   //高斯滤波  
cvCanny(pImg8uSmooth pImgCanny 100 200 3);         //二值化      
cvDilate(pImgCanny pImgCanny 0 1);
cvErode(pImgCanny pImgCanny 0 1);
cvNamedWindow(“cvcanny“ 1);
cvShowImage(“cvcanny“ pImgCanny);


row_start = 0;
row_end = 0;
col_start = 0;
col_end = 0;
cout << “图片的高度值(即像素的行数)为:“ << pImgCanny->height << endl;
cout << “图片的宽度值(即像素的列数)为:“ << pImgCan

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2017-09-12 12:30  车牌识别\
     目录           0  2017-06-10 20:18  车牌识别\.vs\
     目录           0  2017-06-10 20:18  车牌识别\.vs\opencv-001\
     目录           0  2017-06-10 20:18  车牌识别\.vs\opencv-001\v14\
     文件       32256  2017-07-11 10:09  车牌识别\.vs\opencv-001\v14\.suo
     目录           0  2017-09-12 12:30  车牌识别\opencv-001\
     文件        1312  2016-08-10 14:39  车牌识别\opencv-001.sln
     文件    50020352  2017-07-11 10:09  车牌识别\opencv-001.VC.db
     文件       13495  2017-06-10 21:24  车牌识别\opencv-001\main.cpp
     文件        7451  2017-04-17 21:59  车牌识别\opencv-001\opencv-001.vcxproj
     文件        1067  2017-04-17 21:59  车牌识别\opencv-001\opencv-001.vcxproj.filters
     文件       95061  2016-06-15 22:54  车牌识别\opencv-001\test.jpg
     目录           0  2017-06-10 20:18  车牌识别\opencv-001\x64\
     目录           0  2017-09-12 12:30  车牌识别\opencv-001\x64\Debug\
     文件      104503  2017-06-10 21:18  车牌识别\opencv-001\x64\Debug\main.obj
     文件        1273  2017-04-22 08:57  车牌识别\opencv-001\x64\Debug\opencv-001.Build.CppClean.log
     文件         867  2017-06-10 21:18  车牌识别\opencv-001\x64\Debug\opencv-001.log
     目录           0  2017-09-12 12:30  车牌识别\opencv-001\x64\Debug\opencv-001.tlog\
     文件        1390  2017-06-10 21:18  车牌识别\opencv-001\x64\Debug\opencv-001.tlog\CL.command.1.tlog
     文件       30878  2017-06-10 21:18  车牌识别\opencv-001\x64\Debug\opencv-001.tlog\CL.read.1.tlog
     文件         524  2017-06-10 21:18  车牌识别\opencv-001\x64\Debug\opencv-001.tlog\CL.write.1.tlog
     文件        6966  2017-06-10 21:18  车牌识别\opencv-001\x64\Debug\opencv-001.tlog\link.command.1.tlog
     文件        8596  2017-06-10 21:18  车牌识别\opencv-001\x64\Debug\opencv-001.tlog\link.read.1.tlog
     文件         510  2017-06-10 21:18  车牌识别\opencv-001\x64\Debug\opencv-001.tlog\link.write.1.tlog
     文件         208  2017-06-10 21:18  车牌识别\opencv-001\x64\Debug\opencv-001.tlog\opencv-001.lastbuildstate
     文件      510976  2017-06-10 21:18  车牌识别\opencv-001\x64\Debug\vc140.idb
     文件      757760  2017-06-10 21:18  车牌识别\opencv-001\x64\Debug\vc140.pdb
     文件         669  2017-04-17 21:58  车牌识别\stdafx.h
     目录           0  2017-06-10 20:18  车牌识别\x64\
     目录           0  2017-09-12 12:30  车牌识别\x64\Debug\
     文件       72704  2017-06-10 21:18  车牌识别\x64\Debug\opencv-001.exe
............此处省略2个文件信息

评论

共有 条评论