基于opencv2.0的车牌检测与字符分割的代码讲义

/*本程序主要实现的是车牌的定位与检测主要是利用申继龙论文里面的方法1、采集得到的图像2、把RGB图像转换成HSI彩色图像3、利用设定的H、S阈值得到二值图像4、对二值图像水平投影获得候选区域5、对候选区域的HSI图像边缘检测*/#include"stdafx.h"#include"opencv2/opencv.hpp"#include"opencv2/objdetect/objdetect.hpp"#include"opencv2/features2d/features2d.hpp"#include"opencv2/highgui/highgui.hpp"#include"opencv2/calib3d/calib3d.hpp"#include"opencv2/nonfree/nonfree.hpp"#include"opencv2/nonfree/features2d.hpp"#include"opencv2/imgproc/imgproc_c.h"#include"opencv2/legacy/legacy.hpp"#include"opencv2/legacy/compat.hpp"#include<iostream>#include<algorithm>#include<functional>#include<vector>#include<string>#include<stdlib.h>#include<stddef.h>#include<stdint.h>#include<math.h>usingnamespacestd;usingnamespacecv;#definepi3.14159265IplImage*srcImage=NULL;//存储原图片IplImage*srcImage1=NULL;//存储原始图片的副本IplImage*HSI=NULL;staticIplImage*grayImage=NULL;//存储原图片灰度图staticdoubleposdouble=0.0;IplImage*channelOneImage=NULL;IplImage*channelTwoImage=NULL;IplImage*channelThreeImage=NULL;IplImage*plateImage=NULL;//存储车牌图像IplImage*grayPlateImage=NULL;//存储车牌灰度图像vector<IplImage*>characterImageList;//存储7个车牌字符图像的容器vector<int>xList;//存储7个车牌字符的起始和结束位置vector<vector<KeyPoint>>keyPointsList;//存储车牌字符特征点的集合vector<Mat>descriptorsMatList;//存储每一个车牌字符的特征点描述子矩阵vector<vector<Point>>contours;//用来存储经过闭开操作处理后的车牌轮廓doubleGetH(intr,intg,intb){doubleH=0;//H分量doublefenZi=1/2.0*((r-g)+(r-b));doublesq=pow(double(r-b),2)+(r-b)*(g-b);doublefenMu=sqrt(sq);H=acos(fenZi/fenMu)*180/pi;if(b>g){H=360-H;}returnH;}doubleGetS(intr,intg,intb){doubles=0;//S分量intmin=r;if(g<r){min=g;if(b<g){min=b;}}else{if(b<r){min=b;}}s=1-3.0*min/((r+g+b)*1.0);returns;}doubleGetI(intr,intg,intb){doublei=0.0;i=1/3.0*(r+g+b);i=i/255.0;returni;}//通过公式来直接求H的值然后对H分量进行处理voiddoHByMath(IplImage*eleImage){intwidth=eleImage->width;intheight=eleImage->height;for(intcol=0;col<height;col++){uchar*ptr=(uchar*)(eleImage->imageData+col*eleImage->widthStep);//uchar*ptrGray=(uchar*)(grayImage->imageData+col*grayImage->widthStep);//for(introw=0;row<width;row++){intb=ptr[3*row];intg=ptr[3*row+1];intr=ptr[3*row+2];doubleH=GetH(r,g,b);doubleS=GetS(r,g,b);doubleI=GetI(r,g,b);if(H>=190H<=255S>0.3){ptrGray[row]=255;}else{ptrGray[row]=0;}if(I<0.25S<0.4){ptrGray[row]=0;}}}cvShowImage("H分量处理后的图像",grayImage);//考虑H分量处理后就提取尽量多的有用的区域vector<vector<cv::Point>>contours;Matmtx=grayImage;//把IplImage类型转换成Mat类型findContours(mtx,contours,CV_RETR_EXTERNAL,CV_CHAIN_APPROX_NONE);Matresult(mtx.size(),CV_8U,Scalar(255));drawContours(result,contours,-1,Scalar(0),2);imshow("轮廓图",result);}//以下代买判断是否为蓝色像素点//返回0代表是白色点//返回1代表是蓝色点intIsBlueOrWhite(IplImage*image,intcol,introw){CvScalars;s=cvGet2D(image,col,row);intb=s.val[0];intg=s.val[1];intr=s.val[2];doubleH=GetH(r,g,b);doubleS=GetS(r,g,b);doubleI=GetI(r,g,b);if(H>=190H<=255S>0.3){return1;}/*if(I<255S>0){}*//*doublegrayLevel=r*0.299+g*0.587+b*0.114;if(grayLevel>=200){return0;}*/boolflagWhite2=(I>=0.95)||(I>=0.81I<0.95S<(18.0/180.0))||(I>=0.61I<=0.8S<(20.0/180.0))||(I>=0.61I<=0.8S<(20.0/180.0))||(I>=0.51I<=0.6S<(30.0/180.0));boolflagWhite1=(S<=0.3I>=0.6);if(flagWhite1||flagWhite2){ret...

1、当您付费下载文档后,您只拥有了使用权限,并不意味着购买了版权,文档只能用于自身使用,不得用于其他商业用途(如 [转卖]进行直接盈利或[编辑后售卖]进行间接盈利)。
2、本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供参考,付费前请自行鉴别。
3、如文档内容存在侵犯商业秘密、侵犯著作权等,请点击“举报”。

常见问题具体如下:

1、问:已经付过费的文档可以多次下载吗?

      答:可以。登陆您已经付过费的账号,付过费的文档可以免费进行多次下载。

2、问:已经付过费的文档不知下载到什么地方去了?

     答:电脑端-浏览器下载列表里可以找到;手机端-文件管理或下载里可以找到。

            如以上两种方式都没有找到,请提供您的交易单号或截图及接收文档的邮箱等有效信息,发送到客服邮箱,客服经核实后,会将您已经付过费的文档即时发到您邮箱。

注:微信交易号是以“420000”开头的28位数字;

       支付宝交易号是以“2024XXXX”交易日期开头的28位数字。

客服邮箱:

biganzikefu@outlook.com

所有的文档都被视为“模板”,用于写作参考,下载前须认真查看,确认无误后再购买;

文档大部份都是可以预览的,笔杆子文库无法对文档的真实性、完整性、准确性以及专业性等问题提供审核和保证,请慎重购买;

文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为依据;

如果您还有什么不清楚的或需要我们协助,可以联系客服邮箱:

biganzikefu@outlook.com

常见问题具体如下:

1、问:已经付过费的文档可以多次下载吗?

      答:可以。登陆您已经付过费的账号,付过费的文档可以免费进行多次下载。

2、问:已经付过费的文档不知下载到什么地方去了?

     答:电脑端-浏览器下载列表里可以找到;手机端-文件管理或下载里可以找到。

            如以上两种方式都没有找到,请提供您的交易单号或截图及接收文档的邮箱等有效信息,发送到客服邮箱,客服经核实后,会将您已经付过费的文档即时发到您邮箱。

注:微信交易号是以“420000”开头的28位数字;

       支付宝交易号是以“2024XXXX”交易日期开头的28位数字。

文秘专家
机构认证
内容提供者

1

确认删除?